diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/postCreateCommand.sh
index 9cf0b9c3a0..50e03c60c7 100755
--- a/.devcontainer/postCreateCommand.sh
+++ b/.devcontainer/postCreateCommand.sh
@@ -11,10 +11,10 @@ python3 -m venv /home/inventree/dev/venv --system-site-packages --upgrade-deps
invoke update -s
# Configure dev environment
-invoke setup-dev
+invoke dev.setup-dev
# Install required frontend packages
-invoke frontend-install
+invoke dev.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/actions/migration/action.yaml b/.github/actions/migration/action.yaml
index 22c5d45864..eddec9a9da 100644
--- a/.github/actions/migration/action.yaml
+++ b/.github/actions/migration/action.yaml
@@ -9,7 +9,7 @@ runs:
shell: bash
run: |
invoke migrate
- invoke import-fixtures
+ invoke dev.import-fixtures
invoke export-records -f data.json
python3 ./src/backend/InvenTree/manage.py flush --noinput
invoke migrate
diff --git a/.github/scripts/check_js_templates.py b/.github/scripts/check_js_templates.py
index df5e302605..8b2ff60ad9 100644
--- a/.github/scripts/check_js_templates.py
+++ b/.github/scripts/check_js_templates.py
@@ -71,7 +71,7 @@ def check_prohibited_tags(data):
for filename in pathlib.Path(js_i18n_dir).rglob('*.js'):
print(f"Checking file 'translated/{os.path.basename(filename)}':")
- with open(filename, 'r') as js_file:
+ with open(filename, encoding='utf-8') as js_file:
data = js_file.readlines()
errors += check_invalid_tag(data)
@@ -81,7 +81,7 @@ for filename in pathlib.Path(js_dynamic_dir).rglob('*.js'):
print(f"Checking file 'dynamic/{os.path.basename(filename)}':")
# Check that the 'dynamic' files do not contains any translated strings
- with open(filename, 'r') as js_file:
+ with open(filename, encoding='utf-8') as js_file:
data = js_file.readlines()
invalid_tags = ['blocktrans', 'blocktranslate', 'trans', 'translate']
diff --git a/.github/scripts/check_migration_files.py b/.github/scripts/check_migration_files.py
index d224848f02..8ff44f6d14 100644
--- a/.github/scripts/check_migration_files.py
+++ b/.github/scripts/check_migration_files.py
@@ -20,9 +20,9 @@ for line in str(out.decode()).split('\n'):
if len(migrations) == 0:
sys.exit(0)
-print('There are {n} unstaged migration files:'.format(n=len(migrations)))
+print(f'There are {len(migrations)} unstaged migration files:')
for m in migrations:
- print(' - {m}'.format(m=m))
+ print(f' - {m}')
sys.exit(len(migrations))
diff --git a/.github/scripts/check_source_strings.py b/.github/scripts/check_source_strings.py
new file mode 100644
index 0000000000..e95fab3998
--- /dev/null
+++ b/.github/scripts/check_source_strings.py
@@ -0,0 +1,100 @@
+"""Script to check source strings for translations."""
+
+import argparse
+import os
+
+import rapidfuzz
+
+BACKEND_SOURCE_FILE = [
+ '..',
+ '..',
+ 'src',
+ 'backend',
+ 'InvenTree',
+ 'locale',
+ 'en',
+ 'LC_MESSAGES',
+ 'django.po',
+]
+
+FRONTEND_SOURCE_FILE = [
+ '..',
+ '..',
+ 'src',
+ 'frontend',
+ 'src',
+ 'locales',
+ 'en',
+ 'messages.po',
+]
+
+
+def extract_source_strings(file_path):
+ """Extract source strings from the provided file."""
+ here = os.path.abspath(os.path.dirname(__file__))
+ abs_file_path = os.path.abspath(os.path.join(here, *file_path))
+
+ sources = []
+
+ with open(abs_file_path, encoding='utf-8') as f:
+ for line in f:
+ line = line.strip()
+ if line.startswith('msgid '):
+ msgid = line[6:].strip()
+
+ if msgid in sources:
+ print(f'Duplicate source string: {msgid}')
+ else:
+ sources.append(msgid)
+
+ return sources
+
+
+def compare_source_strings(sources, threshold):
+ """Compare source strings to find duplicates (or close matches)."""
+ issues = 0
+
+ for i, source in enumerate(sources):
+ for other in sources[i + 1 :]:
+ if other.lower() == source.lower():
+ print(f'- Duplicate: {source} ~ {other}')
+ issues += 1
+ continue
+
+ ratio = rapidfuzz.fuzz.ratio(source, other)
+ if ratio > threshold:
+ print(f'- Close match: {source} ~ {other} ({ratio:.1f}%)')
+ issues += 1
+
+ if issues:
+ print(f' - Found {issues} issues.')
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(
+ description='Check source strings for translations.'
+ )
+ parser.add_argument(
+ '--backend', action='store_true', help='Check backend source strings'
+ )
+ parser.add_argument(
+ '--frontend', action='store_true', help='Check frontend source strings'
+ )
+ parser.add_argument(
+ '--threshold',
+ type=int,
+ help='Set the threshold for string comparison',
+ default=99,
+ )
+
+ args = parser.parse_args()
+
+ if args.backend:
+ backend_sources = extract_source_strings(BACKEND_SOURCE_FILE)
+ print('Backend source strings:', len(backend_sources))
+ compare_source_strings(backend_sources, args.threshold)
+
+ if args.frontend:
+ frontend_sources = extract_source_strings(FRONTEND_SOURCE_FILE)
+ print('Frontend source strings:', len(frontend_sources))
+ compare_source_strings(frontend_sources, args.threshold)
diff --git a/.github/scripts/version_check.py b/.github/scripts/version_check.py
index 5d26b16092..4d596395a3 100644
--- a/.github/scripts/version_check.py
+++ b/.github/scripts/version_check.py
@@ -89,7 +89,7 @@ def check_version_number(version_string, allow_duplicate=False):
if release > version_tuple:
highest_release = False
- print(f'Found newer release: {str(release)}')
+ print(f'Found newer release: {release!s}')
return highest_release
@@ -134,7 +134,7 @@ if __name__ == '__main__':
version = None
- with open(version_file, 'r') as f:
+ with open(version_file, encoding='utf-8') as f:
text = f.read()
# Extract the InvenTree software version
@@ -175,10 +175,7 @@ if __name__ == '__main__':
print(f"Version number '{version}' does not match tag '{version_tag}'")
sys.exit
- if highest_release:
- docker_tags = [version_tag, 'stable']
- else:
- docker_tags = [version_tag]
+ docker_tags = [version_tag, 'stable'] if highest_release else [version_tag]
elif GITHUB_REF_TYPE == 'branch':
# Otherwise we know we are targeting the 'master' branch
@@ -202,7 +199,7 @@ if __name__ == '__main__':
target_repos = [REPO.lower(), f'ghcr.io/{REPO.lower()}']
# Ref: https://getridbug.com/python/how-to-set-environment-variables-in-github-actions-using-python/
- with open(os.getenv('GITHUB_ENV'), 'a') as env_file:
+ with open(os.getenv('GITHUB_ENV'), 'a', encoding='utf-8') as env_file:
# Construct tag string
tag_list = [[f'{r}:{t}' for t in docker_tags] for r in target_repos]
tags = ','.join(itertools.chain(*tag_list))
diff --git a/.github/workflows/backport.yaml b/.github/workflows/backport.yaml
index bb09d65f3b..7ac4bb2d1b 100644
--- a/.github/workflows/backport.yaml
+++ b/.github/workflows/backport.yaml
@@ -25,7 +25,7 @@ jobs:
)
steps:
- name: Backport Action
- uses: sqren/backport-github-action@f54e19901f2a57f8b82360f2490d47ee82ec82c6 # pin@v9.2.2
+ uses: sqren/backport-github-action@ad888e978060bc1b2798690dd9d03c4036560947 # 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 3377460f6e..5d1b03366a 100644
--- a/.github/workflows/check_translations.yaml
+++ b/.github/workflows/check_translations.yaml
@@ -30,13 +30,16 @@ jobs:
steps:
- name: Checkout Code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
install: true
apt-dependency: gettext
- name: Test Translations
- run: invoke translate
+ run: invoke dev.translate
+ - name: Check for Duplicates
+ run: |
+ python ./.github/scripts/check_source_strings.py --frontend --backend
- name: Check Migration Files
run: python3 .github/scripts/check_migration_files.py
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml
index a264fdf474..df29716e3e 100644
--- a/.github/workflows/docker.yaml
+++ b/.github/workflows/docker.yaml
@@ -39,7 +39,7 @@ jobs:
docker: ${{ steps.filter.outputs.docker }}
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2
id: filter
with:
@@ -66,9 +66,9 @@ jobs:
steps:
- name: Check out repo
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Set Up Python ${{ env.python_version }}
- uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # pin@v5.1.1
+ uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # pin@v5.2.0
with:
python-version: ${{ env.python_version }}
- name: Version Check
@@ -97,7 +97,7 @@ jobs:
run: |
docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke install
docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke update
- docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke setup-dev
+ docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke dev.setup-dev
docker compose --project-directory . -f contrib/container/dev-docker-compose.yml up -d
docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run inventree-dev-server invoke wait
- name: Check Data Directory
@@ -115,10 +115,10 @@ jobs:
- name: Run Unit Tests
run: |
echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> contrib/container/docker.dev.env
- docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke test --disable-pty
+ docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.test --disable-pty
- name: Run Migration Tests
run: |
- docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke test --migrations
+ docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.test --migrations
- name: Clean up test folder
run: |
rm -rf InvenTree/_testfolder
@@ -127,10 +127,10 @@ jobs:
uses: docker/setup-qemu-action@49b3bc8e6bdd4a60e6116a5414239cba5943d3cf # pin@v3.2.0
- name: Set up Docker Buildx
if: github.event_name != 'pull_request'
- uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db # pin@v3.6.1
+ uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # pin@v3.7.1
- name: Set up cosign
if: github.event_name != 'pull_request'
- uses: sigstore/cosign-installer@4959ce089c160fddf62f7b42464195ba1a56d382 # pin@v3.6.0
+ uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # pin@v3.7.0
- name: Check if Dockerhub login is required
id: docker_login
run: |
@@ -166,7 +166,7 @@ jobs:
- name: Push Docker Images
id: push-docker
if: github.event_name != 'pull_request'
- uses: docker/build-push-action@5cd11c3a4ced054e52742c5fd54dca954e0edd85 # pin@v6.7.0
+ uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # pin@v6.9.0
with:
context: .
file: ./contrib/container/Dockerfile
diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml
index ece0cfad8e..0b355b7170 100644
--- a/.github/workflows/qc_checks.yaml
+++ b/.github/workflows/qc_checks.yaml
@@ -38,7 +38,7 @@ jobs:
force: ${{ steps.force.outputs.force }}
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2
id: filter
with:
@@ -70,7 +70,7 @@ jobs:
needs: ["pre-commit"]
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -92,9 +92,9 @@ jobs:
if: needs.paths-filter.outputs.server == 'true' || needs.paths-filter.outputs.frontend == 'true' || needs.paths-filter.outputs.force == 'true'
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Set up Python ${{ env.python_version }}
- uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # pin@v5.1.1
+ uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # pin@v5.2.0
with:
python-version: ${{ env.python_version }}
cache: "pip"
@@ -113,9 +113,9 @@ jobs:
steps:
- name: Checkout Code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Set up Python ${{ env.python_version }}
- uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # pin@v5.1.1
+ uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # pin@v5.2.0
with:
python-version: ${{ env.python_version }}
- name: Check Config
@@ -149,7 +149,7 @@ jobs:
version: ${{ steps.version.outputs.version }}
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -157,9 +157,9 @@ jobs:
dev-install: true
update: true
- name: Export API Documentation
- run: invoke schema --ignore-warnings --filename src/backend/InvenTree/schema.yml
+ run: invoke dev.schema --ignore-warnings --filename src/backend/InvenTree/schema.yml
- name: Upload schema
- uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # pin@v4.3.6
+ uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # pin@v4.4.3
with:
name: schema.yml
path: src/backend/InvenTree/schema.yml
@@ -177,7 +177,7 @@ jobs:
echo "Downloaded api.yaml"
- name: Running OpenAPI Spec diff action
id: breaking_changes
- uses: oasdiff/oasdiff-action/diff@a2ff6682b27d175162a74c09ace8771bd3d512f8 # pin@main
+ uses: oasdiff/oasdiff-action/diff@1c611ffb1253a72924624aa4fb662e302b3565d3 # pin@main
with:
base: 'api.yaml'
revision: 'src/backend/InvenTree/schema.yml'
@@ -191,7 +191,7 @@ jobs:
diff --color -u src/backend/InvenTree/schema.yml api.yaml
diff -u src/backend/InvenTree/schema.yml api.yaml && echo "no difference in API schema " || exit 2
- name: Check schema - including warnings
- run: invoke schema
+ run: invoke dev.schema
continue-on-error: true
- name: Extract version for publishing
id: version
@@ -211,7 +211,7 @@ jobs:
version: ${{ needs.schema.outputs.version }}
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
name: Checkout Code
with:
repository: inventree/schema
@@ -250,7 +250,7 @@ jobs:
INVENTREE_SITE_URL: http://127.0.0.1:12345
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -262,9 +262,9 @@ jobs:
run: git clone --depth 1 https://github.com/inventree/${{ env.wrapper_name }} ./${{ env.wrapper_name }}
- name: Start InvenTree Server
run: |
- invoke delete-data -f
- invoke import-fixtures
- invoke server -a 127.0.0.1:12345 &
+ invoke dev.delete-data -f
+ invoke dev.import-fixtures
+ invoke dev.server -a 127.0.0.1:12345 &
invoke wait
- name: Run Tests For `${{ env.wrapper_name }}`
run: |
@@ -292,7 +292,7 @@ jobs:
python_version: ${{ matrix.python_version }}
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -302,13 +302,13 @@ jobs:
- name: Data Export Test
uses: ./.github/actions/migration
- name: Test Translations
- run: invoke translate
+ run: invoke dev.translate
- name: Check Migration Files
run: python3 .github/scripts/check_migration_files.py
- name: Coverage Tests
- run: invoke test --coverage
+ run: invoke dev.test --coverage
- name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # pin@v4.5.0
+ uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # pin@v4.6.0
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
@@ -346,7 +346,7 @@ jobs:
- 6379:6379
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -355,7 +355,7 @@ jobs:
dev-install: true
update: true
- name: Run Tests
- run: invoke test
+ run: invoke dev.test
- name: Data Export Test
uses: ./.github/actions/migration
@@ -390,7 +390,7 @@ jobs:
- 3306:3306
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -399,7 +399,7 @@ jobs:
dev-install: true
update: true
- name: Run Tests
- run: invoke test
+ run: invoke dev.test
- name: Data Export Test
uses: ./.github/actions/migration
@@ -429,7 +429,7 @@ jobs:
- 5432:5432
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -438,9 +438,9 @@ jobs:
dev-install: true
update: true
- name: Run Tests
- run: invoke test --migrations --report --coverage
+ run: invoke dev.test --migrations --report --coverage
- name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # pin@v4.5.0
+ uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # pin@v4.6.0
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
@@ -460,7 +460,7 @@ jobs:
INVENTREE_PLUGINS_ENABLED: false
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
name: Checkout Code
- name: Environment Setup
uses: ./.github/actions/setup
@@ -517,7 +517,7 @@ jobs:
VITE_COVERAGE: true
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -525,17 +525,17 @@ jobs:
install: true
update: true
- name: Set up test data
- run: invoke setup-test -i
+ run: invoke dev.setup-test -i
- name: Rebuild thumbnails
- run: invoke rebuild-thumbnails
+ run: invoke int.rebuild-thumbnails
- name: Install dependencies
- run: inv frontend-compile
+ run: invoke int.frontend-compile
- name: Install Playwright Browsers
run: cd src/frontend && npx playwright install --with-deps
- name: Run Playwright tests
id: tests
run: cd src/frontend && npx nyc playwright test
- - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # pin@v4
+ - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # pin@v4
if: ${{ !cancelled() && steps.tests.outcome == 'failure' }}
with:
name: playwright-report
@@ -545,12 +545,19 @@ jobs:
if: always()
run: cd src/frontend && npx nyc report --report-dir ./coverage --temp-dir .nyc_output --reporter=lcov --exclude-after-remap false
- name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@e28ff129e5465c2c0dcc6f003fc735cb6ae0c673 # pin@v4.5.0
+ uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # pin@v4.6.0
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
slug: inventree/InvenTree
flags: pui
+ - name: Upload bundler info
+ env:
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
+ run: |
+ cd src/frontend
+ yarn install
+ yarn run build
platform_ui_build:
name: Build - UI Platform
@@ -558,7 +565,7 @@ jobs:
timeout-minutes: 60
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -573,7 +580,7 @@ jobs:
run: |
cd src/backend/InvenTree/web/static
zip -r frontend-build.zip web/ web/.vite
- - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # pin@v4.3.6
+ - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # pin@v4.4.3
with:
name: frontend-build
path: src/backend/InvenTree/web/static/web
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index c091b048ba..d5592cc8ef 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -18,7 +18,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout Code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Version Check
run: |
pip install --require-hashes -r contrib/dev_reqs/requirements.txt
@@ -39,7 +39,7 @@ jobs:
contents: write
attestations: write
steps:
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -49,7 +49,7 @@ jobs:
- name: Build frontend
run: cd src/frontend && npm run compile && npm run build
- name: Create SBOM for frontend
- uses: anchore/sbom-action@v0
+ uses: anchore/sbom-action@8d0a6505bf28ced3e85154d13dc6af83299e13f1 # pin@v0
with:
artifact-name: frontend-build.spdx
path: src/frontend
@@ -63,7 +63,7 @@ jobs:
zip -r ../frontend-build.zip * .vite
- name: Attest Build Provenance
id: attest
- uses: actions/attest-build-provenance@v1
+ uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # pin@v1
with:
subject-path: "${{ github.workspace }}/src/backend/InvenTree/web/static/frontend-build.zip"
diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml
index b011548ce5..c935c8cf02 100644
--- a/.github/workflows/scorecard.yaml
+++ b/.github/workflows/scorecard.yaml
@@ -32,7 +32,7 @@ jobs:
steps:
- name: "Checkout code"
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
persist-credentials: false
@@ -59,7 +59,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
- uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
+ uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: SARIF file
path: results.sarif
@@ -67,6 +67,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
- uses: github/codeql-action/upload-sarif@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3
+ uses: github/codeql-action/upload-sarif@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13
with:
sarif_file: results.sarif
diff --git a/.github/workflows/translations.yaml b/.github/workflows/translations.yaml
index 308e171a98..8608b4d6ce 100644
--- a/.github/workflows/translations.yaml
+++ b/.github/workflows/translations.yaml
@@ -31,7 +31,7 @@ jobs:
steps:
- name: Checkout Code
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # pin@v4.1.7
+ uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # pin@v4.2.1
- name: Environment Setup
uses: ./.github/actions/setup
with:
@@ -39,9 +39,19 @@ jobs:
npm: true
apt-dependency: gettext
- name: Make Translations
- run: invoke translate
+ run: invoke dev.translate
+ - name: Remove compiled static files
+ run: rm -rf src/backend/InvenTree/static
+ - name: Remove all local changes that are not *.po files
+ run: |
+ git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
+ git config --local user.name "github-actions[bot]"
+ git add src/backend/InvenTree/locale/en/LC_MESSAGES/django.po src/frontend/src/locales/en/messages.po
+ git commit -m "add translations" || true
+ git reset --hard
+ git reset HEAD~
- name: crowdin action
- uses: crowdin/github-action@6ed209d411599a981ccb978df3be9dc9b8a81699 # pin@v2
+ uses: crowdin/github-action@95d6e895e871c3c7acf0cfb962f296baa41e63c6 # pin@v2
with:
upload_sources: true
upload_translations: false
@@ -50,7 +60,7 @@ jobs:
create_pull_request: true
pull_request_title: 'New Crowdin updates'
pull_request_body: 'New Crowdin translations by [Crowdin GH Action](https://github.com/crowdin/github-action)'
- pull_request_base_branch_name: 'l10'
+ pull_request_base_branch_name: 'master'
pull_request_labels: 'translations'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 8541ce79a3..da5a08bd2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,6 +31,7 @@ var/
# Django stuff:
*.log
local_settings.py
+*.sqlite
*.sqlite3
*.sqlite3-journal
*.backup
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index c4d13efeef..302c7d4a69 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -17,17 +17,18 @@ repos:
- id: check-yaml
- id: mixed-line-ending
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.5.1
+ rev: v0.7.0
hooks:
- id: ruff-format
args: [--preview]
- id: ruff
args: [
--fix,
+ # --unsafe-fixes,
--preview
]
- repo: https://github.com/astral-sh/uv-pre-commit
- rev: 0.2.13
+ rev: 0.4.24
hooks:
- id: pip-compile
name: pip-compile requirements-dev.in
@@ -50,7 +51,7 @@ repos:
args: [contrib/container/requirements.in, -o, contrib/container/requirements.txt, --python-version=3.11, --no-strip-extras, --generate-hashes]
files: contrib/container/requirements\.(in|txt)$
- repo: https://github.com/Riverside-Healthcare/djLint
- rev: v1.34.1
+ rev: v1.35.2
hooks:
- id: djlint-django
- repo: https://github.com/codespell-project/codespell
@@ -77,7 +78,7 @@ repos:
- "prettier@^2.4.1"
- "@trivago/prettier-plugin-sort-imports"
- repo: https://github.com/pre-commit/mirrors-eslint
- rev: "v9.6.0"
+ rev: "v9.12.0"
hooks:
- id: eslint
additional_dependencies:
@@ -89,7 +90,7 @@ repos:
- "@typescript-eslint/parser"
files: ^src/frontend/.*\.(js|jsx|ts|tsx)$
- repo: https://github.com/gitleaks/gitleaks
- rev: v8.18.4
+ rev: v8.21.0
hooks:
- id: gitleaks
#- repo: https://github.com/jumanjihouse/pre-commit-hooks
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index ffa8d8d36b..830889fb44 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -9,61 +9,61 @@
{
"label": "worker",
"type": "shell",
- "command": "inv worker",
+ "command": "invoke worker",
"problemMatcher": [],
},
{
"label": "clean-settings",
"type": "shell",
- "command": "inv clean-settings",
+ "command": "invoke int.clean-settings",
"problemMatcher": [],
},
{
"label": "delete-data",
"type": "shell",
- "command": "inv delete-data",
+ "command": "invoke dev.delete-data",
"problemMatcher": [],
},
{
"label": "migrate",
"type": "shell",
- "command": "inv migrate",
+ "command": "invoke migrate",
"problemMatcher": [],
},
{
"label": "server",
"type": "shell",
- "command": "inv server",
+ "command": "invoke dev.server",
"problemMatcher": [],
},
{
"label": "setup-dev",
"type": "shell",
- "command": "inv setup-dev",
+ "command": "invoke dev.setup-dev",
"problemMatcher": [],
},
{
"label": "setup-test",
"type": "shell",
- "command": "inv setup-test -i --path dev/inventree-demo-dataset",
+ "command": "invoke dev.setup-test -i --path dev/inventree-demo-dataset",
"problemMatcher": [],
},
{
"label": "superuser",
"type": "shell",
- "command": "inv superuser",
+ "command": "invoke superuser",
"problemMatcher": [],
},
{
"label": "test",
"type": "shell",
- "command": "inv test",
+ "command": "invoke dev.test",
"problemMatcher": [],
},
{
"label": "update",
"type": "shell",
- "command": "inv update",
+ "command": "invoke update",
"problemMatcher": [],
},
]
diff --git a/LICENSE b/LICENSE
index a07b8befba..3a4626c1c4 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2017-2022 InvenTree
+Copyright (c) 2017 - InvenTree Developers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index 3f6b0dd27c..e455ddca49 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
Open Source Inventory Management System
-[](https://opensource.org/licenses/MIT)
+[](https://opensource.org/license/MIT)

[](https://inventree.readthedocs.io/en/latest/?badge=latest)

@@ -81,7 +81,7 @@ InvenTree is designed to be **extensible**, and provides multiple options for **
- Client
+ Client - CUI
Bootstrap
jQuery
@@ -89,13 +89,27 @@ InvenTree is designed to be **extensible**, and provides multiple options for **
+
+ Client - PUI
+
+
+
DevOps
diff --git a/codecov.yml b/codecov.yml
index 79d066e93b..a9544d9875 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -27,3 +27,11 @@ flag_management:
statuses:
- type: project
target: 45%
+
+comment:
+ require_bundle_changes: True
+ bundle_change_threshold: "1Kb"
+
+bundle_analysis:
+ warning_threshold: "5%"
+ status: "informational"
diff --git a/contrib/container/Dockerfile b/contrib/container/Dockerfile
index 3ce3d080ed..c8e6126e96 100644
--- a/contrib/container/Dockerfile
+++ b/contrib/container/Dockerfile
@@ -115,7 +115,7 @@ RUN apk add --no-cache --update nodejs npm yarn
RUN yarn config set network-timeout 600000 -g
COPY src ${INVENTREE_HOME}/src
COPY tasks.py ${INVENTREE_HOME}/tasks.py
-RUN cd ${INVENTREE_HOME} && inv frontend-compile
+RUN cd ${INVENTREE_HOME} && invoke int.frontend-compile
COPY contrib/container/execute.sh ${INVENTREE_HOME}/execute.sh
RUN chmod +x ${INVENTREE_HOME}/execute.sh
diff --git a/contrib/container/requirements.in b/contrib/container/requirements.in
index 47968937a5..1a87893d54 100644
--- a/contrib/container/requirements.in
+++ b/contrib/container/requirements.in
@@ -17,6 +17,7 @@ gunicorn>=22.0.0
# LDAP required packages
django-auth-ldap # Django integration for ldap auth
python-ldap # LDAP auth support
+django<5.0 # Force lower to match main project
# Upgraded python package installer
uv
diff --git a/contrib/container/requirements.txt b/contrib/container/requirements.txt
index f519da636b..1d791af1a8 100644
--- a/contrib/container/requirements.txt
+++ b/contrib/container/requirements.txt
@@ -4,17 +4,19 @@ asgiref==3.8.1 \
--hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \
--hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590
# via django
-django==4.2.15 \
- --hash=sha256:61ee4a130efb8c451ef3467c67ca99fdce400fedd768634efc86a68c18d80d30 \
- --hash=sha256:c77f926b81129493961e19c0e02188f8d07c112a1162df69bfab178ae447f94a
- # via django-auth-ldap
+django==4.2.16 \
+ --hash=sha256:1ddc333a16fc139fd253035a1606bb24261951bbc3a6ca256717fa06cc41a898 \
+ --hash=sha256:6f1616c2786c408ce86ab7e10f792b8f15742f7b7b7460243929cb371e7f1dad
+ # via
+ # -r contrib/container/requirements.in
+ # django-auth-ldap
django-auth-ldap==4.8.0 \
--hash=sha256:4b4b944f3c28bce362f33fb6e8db68429ed8fd8f12f0c0c4b1a4344a7ef225ce \
--hash=sha256:604250938ddc9fda619f247c7a59b0b2f06e53a7d3f46a156f28aa30dd71a738
# via -r contrib/container/requirements.in
-gunicorn==22.0.0 \
- --hash=sha256:350679f91b24062c86e386e198a15438d53a7a8207235a78ba1b53df4c4378d9 \
- --hash=sha256:4a0b436239ff76fb33f11c07a16482c521a7e09c1ce3cc293c2330afe01bec63
+gunicorn==23.0.0 \
+ --hash=sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d \
+ --hash=sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec
# via -r contrib/container/requirements.in
invoke==2.2.0 \
--hash=sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820 \
@@ -33,200 +35,201 @@ mariadb==1.1.10 \
--hash=sha256:d7b09ec4abd02ed235257feb769f90cd4066e8f536b55b92f5166103d5b66a63 \
--hash=sha256:dff8b28ce4044574870d7bdd2d9f9f5da8e5f95a7ff6d226185db733060d1a93
# via -r contrib/container/requirements.in
-mysqlclient==2.2.4 \
- --hash=sha256:329e4eec086a2336fe3541f1ce095d87a6f169d1cc8ba7b04ac68bcb234c9711 \
- --hash=sha256:33bc9fb3464e7d7c10b1eaf7336c5ff8f2a3d3b88bab432116ad2490beb3bf41 \
- --hash=sha256:3c318755e06df599338dad7625f884b8a71fcf322a9939ef78c9b3db93e1de7a \
- --hash=sha256:4e80dcad884dd6e14949ac6daf769123223a52a6805345608bf49cdaf7bc8b3a \
- --hash=sha256:9d3310295cb682232cadc28abd172f406c718b9ada41d2371259098ae37779d3 \
- --hash=sha256:9d4c015480c4a6b2b1602eccd9846103fc70606244788d04aa14b31c4bd1f0e2 \
- --hash=sha256:ac44777eab0a66c14cb0d38965572f762e193ec2e5c0723bcd11319cc5b693c5 \
- --hash=sha256:d43987bb9626096a302ca6ddcdd81feaeca65ced1d5fe892a6a66b808326aa54 \
- --hash=sha256:e1ebe3f41d152d7cb7c265349fdb7f1eca86ccb0ca24a90036cde48e00ceb2ab
+mysqlclient==2.2.5 \
+ --hash=sha256:1d2e2ca0fe8405d8d6464edd01bf059951279e4bc27284d39341bd4737b2bc64 \
+ --hash=sha256:3f9625bea2b9bcde0ace76b32708762d44597491092c819fd1bff5b4e27f709b \
+ --hash=sha256:8012c633aab8c91ea8172ac479807135b171501b9cad1a7cd9b58c4dc8dcdab5 \
+ --hash=sha256:add8643c32f738014d252d2bdebb478623b04802e8396d5903905db36474d3ff \
+ --hash=sha256:aee14f1872114865679fcb09aac3772de4595fa7dcf2f83a4c7afee15e508854 \
+ --hash=sha256:b54511648c1455b43ac28f8b4c1f732c5b0c343e87f7a3bd6fc9f9fe0f91934e \
+ --hash=sha256:b78438314199504c64f69e1e3521f2c9b419f19fcd85158b44c997b64409a6af \
+ --hash=sha256:e871ede4261d0d42b8ed20a2459db411c7deafedd8e77b7e4ba760be4a6a752b
# via -r contrib/container/requirements.in
-packaging==24.0 \
- --hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
- --hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
+packaging==24.1 \
+ --hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
+ --hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
# via
# gunicorn
# mariadb
-psycopg[binary, pool]==3.1.18 \
- --hash=sha256:31144d3fb4c17d78094d9e579826f047d4af1da6a10427d91dfcfb6ecdf6f12b \
- --hash=sha256:4d5a0a5a8590906daa58ebd5f3cfc34091377354a1acced269dd10faf55da60e
+psycopg[binary, pool]==3.2.3 \
+ --hash=sha256:644d3973fe26908c73d4be746074f6e5224b03c1101d302d9a53bf565ad64907 \
+ --hash=sha256:a5764f67c27bec8bfac85764d23c534af2c27b893550377e37ce59c12aac47a2
# via -r contrib/container/requirements.in
-psycopg-binary==3.1.18 \
- --hash=sha256:02bd4da45d5ee9941432e2e9bf36fa71a3ac21c6536fe7366d1bd3dd70d6b1e7 \
- --hash=sha256:0f68ac2364a50d4cf9bb803b4341e83678668f1881a253e1224574921c69868c \
- --hash=sha256:13bcd3742112446037d15e360b27a03af4b5afcf767f5ee374ef8f5dd7571b31 \
- --hash=sha256:1729d0e3dfe2546d823841eb7a3d003144189d6f5e138ee63e5227f8b75276a5 \
- --hash=sha256:1859aeb2133f5ecdd9cbcee155f5e38699afc06a365f903b1512c765fd8d457e \
- --hash=sha256:1c9b6bd7fb5c6638cb32469674707649b526acfe786ba6d5a78ca4293d87bae4 \
- --hash=sha256:247474af262bdd5559ee6e669926c4f23e9cf53dae2d34c4d991723c72196404 \
- --hash=sha256:258d2f0cb45e4574f8b2fe7c6d0a0e2eb58903a4fd1fbaf60954fba82d595ab7 \
- --hash=sha256:2e2484ae835dedc80cdc7f1b1a939377dc967fed862262cfd097aa9f50cade46 \
- --hash=sha256:320047e3d3554b857e16c2b6b615a85e0db6a02426f4d203a4594a2f125dfe57 \
- --hash=sha256:39242546383f6b97032de7af30edb483d237a0616f6050512eee7b218a2aa8ee \
- --hash=sha256:3c2b039ae0c45eee4cd85300ef802c0f97d0afc78350946a5d0ec77dd2d7e834 \
- --hash=sha256:3c7afcd6f1d55992f26d9ff7b0bd4ee6b475eb43aa3f054d67d32e09f18b0065 \
- --hash=sha256:3e4b0bb91da6f2238dbd4fbb4afc40dfb4f045bb611b92fce4d381b26413c686 \
- --hash=sha256:3e7ce4d988112ca6c75765c7f24c83bdc476a6a5ce00878df6c140ca32c3e16d \
- --hash=sha256:4085f56a8d4fc8b455e8f44380705c7795be5317419aa5f8214f315e4205d804 \
- --hash=sha256:4575da95fc441244a0e2ebaf33a2b2f74164603341d2046b5cde0a9aa86aa7e2 \
- --hash=sha256:489aa4fe5a0b653b68341e9e44af247dedbbc655326854aa34c163ef1bcb3143 \
- --hash=sha256:4e4de16a637ec190cbee82e0c2dc4860fed17a23a35f7a1e6dc479a5c6876722 \
- --hash=sha256:531381f6647fc267383dca88dbe8a70d0feff433a8e3d0c4939201fea7ae1b82 \
- --hash=sha256:55ff0948457bfa8c0d35c46e3a75193906d1c275538877ba65907fd67aa059ad \
- --hash=sha256:59701118c7d8842e451f1e562d08e8708b3f5d14974eefbce9374badd723c4ae \
- --hash=sha256:5c323103dfa663b88204cf5f028e83c77d7a715f9b6f51d2bbc8184b99ddd90a \
- --hash=sha256:5d6e860edf877d4413e4a807e837d55e3a7c7df701e9d6943c06e460fa6c058f \
- --hash=sha256:639dd78ac09b144b0119076783cb64e1128cc8612243e9701d1503c816750b2e \
- --hash=sha256:6432047b8b24ef97e3fbee1d1593a0faaa9544c7a41a2c67d1f10e7621374c83 \
- --hash=sha256:67284e2e450dc7a9e4d76e78c0bd357dc946334a3d410defaeb2635607f632cd \
- --hash=sha256:6ebecbf2406cd6875bdd2453e31067d1bd8efe96705a9489ef37e93b50dc6f09 \
- --hash=sha256:7121acc783c4e86d2d320a7fb803460fab158a7f0a04c5e8c5d49065118c1e73 \
- --hash=sha256:74e498586b72fb819ca8ea82107747d0cb6e00ae685ea6d1ab3f929318a8ce2d \
- --hash=sha256:780a90bcb69bf27a8b08bc35b958e974cb6ea7a04cdec69e737f66378a344d68 \
- --hash=sha256:7ac1785d67241d5074f8086705fa68e046becea27964267ab3abd392481d7773 \
- --hash=sha256:812726266ab96de681f2c7dbd6b734d327f493a78357fcc16b2ac86ff4f4e080 \
- --hash=sha256:824a1bfd0db96cc6bef2d1e52d9e0963f5bf653dd5bc3ab519a38f5e6f21c299 \
- --hash=sha256:87dd9154b757a5fbf6d590f6f6ea75f4ad7b764a813ae04b1d91a70713f414a1 \
- --hash=sha256:887f8d856c91510148be942c7acd702ccf761a05f59f8abc123c22ab77b5a16c \
- --hash=sha256:888a72c2aca4316ca6d4a619291b805677bae99bba2f6e31a3c18424a48c7e4d \
- --hash=sha256:8f54978c4b646dec77fefd8485fa82ec1a87807f334004372af1aaa6de9539a5 \
- --hash=sha256:91074f78a9f890af5f2c786691575b6b93a4967ad6b8c5a90101f7b8c1a91d9c \
- --hash=sha256:9d684227ef8212e27da5f2aff9d4d303cc30b27ac1702d4f6881935549486dd5 \
- --hash=sha256:9e24e7b6a68a51cc3b162d0339ae4e1263b253e887987d5c759652f5692b5efe \
- --hash=sha256:9ffcbbd389e486d3fd83d30107bbf8b27845a295051ccabde240f235d04ed921 \
- --hash=sha256:a87e9eeb80ce8ec8c2783f29bce9a50bbcd2e2342a340f159c3326bf4697afa1 \
- --hash=sha256:ad35ac7fd989184bf4d38a87decfb5a262b419e8ba8dcaeec97848817412c64a \
- --hash=sha256:b15e3653c82384b043d820fc637199b5c6a36b37fa4a4943e0652785bb2bad5d \
- --hash=sha256:b293e01057e63c3ac0002aa132a1071ce0fdb13b9ee2b6b45d3abdb3525c597d \
- --hash=sha256:b2f7f95746efd1be2dc240248cc157f4315db3fd09fef2adfcc2a76e24aa5741 \
- --hash=sha256:bd27f713f2e5ef3fd6796e66c1a5203a27a30ecb847be27a78e1df8a9a5ae68c \
- --hash=sha256:c38a4796abf7380f83b1653c2711cb2449dd0b2e5aca1caa75447d6fa5179c69 \
- --hash=sha256:c76659ae29a84f2c14f56aad305dd00eb685bd88f8c0a3281a9a4bc6bd7d2aa7 \
- --hash=sha256:c84a0174109f329eeda169004c7b7ca2e884a6305acab4a39600be67f915ed38 \
- --hash=sha256:cd2a9f7f0d4dacc5b9ce7f0e767ae6cc64153264151f50698898c42cabffec0c \
- --hash=sha256:d322ba72cde4ca2eefc2196dad9ad7e52451acd2f04e3688d590290625d0c970 \
- --hash=sha256:d4422af5232699f14b7266a754da49dc9bcd45eba244cf3812307934cd5d6679 \
- --hash=sha256:d46ae44d66bf6058a812467f6ae84e4e157dee281bfb1cfaeca07dee07452e85 \
- --hash=sha256:da917f6df8c6b2002043193cb0d74cc173b3af7eb5800ad69c4e1fbac2a71c30 \
- --hash=sha256:dea4a59da7850192fdead9da888e6b96166e90608cf39e17b503f45826b16f84 \
- --hash=sha256:e05f6825f8db4428782135e6986fec79b139210398f3710ed4aa6ef41473c008 \
- --hash=sha256:e1cf59e0bb12e031a48bb628aae32df3d0c98fd6c759cb89f464b1047f0ca9c8 \
- --hash=sha256:e252d66276c992319ed6cd69a3ffa17538943954075051e992143ccbf6dc3d3e \
- --hash=sha256:e262398e5d51563093edf30612cd1e20fedd932ad0994697d7781ca4880cdc3d \
- --hash=sha256:e28ff8f3de7b56588c2a398dc135fd9f157d12c612bd3daa7e6ba9872337f6f5 \
- --hash=sha256:eea5f14933177ffe5c40b200f04f814258cc14b14a71024ad109f308e8bad414 \
- --hash=sha256:f876ebbf92db70125f6375f91ab4bc6b27648aa68f90d661b1fc5affb4c9731c \
- --hash=sha256:f8ff3bc08b43f36fdc24fedb86d42749298a458c4724fb588c4d76823ac39f54
+psycopg-binary==3.2.3 \
+ --hash=sha256:0463a11b1cace5a6aeffaf167920707b912b8986a9c7920341c75e3686277920 \
+ --hash=sha256:05a1bdce30356e70a05428928717765f4a9229999421013f41338d9680d03a63 \
+ --hash=sha256:06b5cc915e57621eebf2393f4173793ed7e3387295f07fed93ed3fb6a6ccf585 \
+ --hash=sha256:07d019a786eb020c0f984691aa1b994cb79430061065a694cf6f94056c603d26 \
+ --hash=sha256:09baa041856b35598d335b1a74e19a49da8500acedf78164600694c0ba8ce21b \
+ --hash=sha256:1303bf8347d6be7ad26d1362af2c38b3a90b8293e8d56244296488ee8591058e \
+ --hash=sha256:192a5f8496e6e1243fdd9ac20e117e667c0712f148c5f9343483b84435854c78 \
+ --hash=sha256:1985ab05e9abebfbdf3163a16ebb37fbc5d49aff2bf5b3d7375ff0920bbb54cd \
+ --hash=sha256:1f8b0d0e99d8e19923e6e07379fa00570be5182c201a8c0b5aaa9a4d4a4ea20b \
+ --hash=sha256:257c4aea6f70a9aef39b2a77d0658a41bf05c243e2bf41895eb02220ac6306f3 \
+ --hash=sha256:261f0031ee6074765096a19b27ed0f75498a8338c3dcd7f4f0d831e38adf12d1 \
+ --hash=sha256:2773f850a778575dd7158a6dd072f7925b67f3ba305e2003538e8831fec77a1d \
+ --hash=sha256:2a29f5294b0b6360bfda69653697eff70aaf2908f58d1073b0acd6f6ab5b5a4f \
+ --hash=sha256:2bb342a01c76f38a12432848e6013c57eb630103e7556cf79b705b53814c3949 \
+ --hash=sha256:2c0419cdad8c70eaeb3116bb28e7b42d546f91baf5179d7556f230d40942dc78 \
+ --hash=sha256:3bffb61e198a91f712cc3d7f2d176a697cb05b284b2ad150fb8edb308eba9002 \
+ --hash=sha256:41fdec0182efac66b27478ac15ef54c9ebcecf0e26ed467eb7d6f262a913318b \
+ --hash=sha256:48f8ca6ee8939bab760225b2ab82934d54330eec10afe4394a92d3f2a0c37dd6 \
+ --hash=sha256:4926ea5c46da30bec4a85907aa3f7e4ea6313145b2aa9469fdb861798daf1502 \
+ --hash=sha256:4c57615791a337378fe5381143259a6c432cdcbb1d3e6428bfb7ce59fff3fb5c \
+ --hash=sha256:4e76ce2475ed4885fe13b8254058be710ec0de74ebd8ef8224cf44a9a3358e5f \
+ --hash=sha256:5361ea13c241d4f0ec3f95e0bf976c15e2e451e9cc7ef2e5ccfc9d170b197a40 \
+ --hash=sha256:5905729668ef1418bd36fbe876322dcb0f90b46811bba96d505af89e6fbdce2f \
+ --hash=sha256:5938b257b04c851c2d1e6cb2f8c18318f06017f35be9a5fe761ee1e2e344dfb7 \
+ --hash=sha256:5e37d5027e297a627da3551a1e962316d0f88ee4ada74c768f6c9234e26346d9 \
+ --hash=sha256:64a607e630d9f4b2797f641884e52b9f8e239d35943f51bef817a384ec1678fe \
+ --hash=sha256:64dc6e9ec64f592f19dc01a784e87267a64a743d34f68488924251253da3c818 \
+ --hash=sha256:69320f05de8cdf4077ecd7fefdec223890eea232af0d58f2530cbda2871244a0 \
+ --hash=sha256:6d8f2144e0d5808c2e2aed40fbebe13869cd00c2ae745aca4b3b16a435edb056 \
+ --hash=sha256:700679c02f9348a0d0a2adcd33a0275717cd0d0aee9d4482b47d935023629505 \
+ --hash=sha256:709447bd7203b0b2debab1acec23123eb80b386f6c29e7604a5d4326a11e5bd6 \
+ --hash=sha256:71adcc8bc80a65b776510bc39992edf942ace35b153ed7a9c6c573a6849ce308 \
+ --hash=sha256:71db8896b942770ed7ab4efa59b22eee5203be2dfdee3c5258d60e57605d688c \
+ --hash=sha256:74fbf5dd3ef09beafd3557631e282f00f8af4e7a78fbfce8ab06d9cd5a789aae \
+ --hash=sha256:79498df398970abcee3d326edd1d4655de7d77aa9aecd578154f8af35ce7bbd2 \
+ --hash=sha256:7ad357e426b0ea5c3043b8ec905546fa44b734bf11d33b3da3959f6e4447d350 \
+ --hash=sha256:7d784f614e4d53050cbe8abf2ae9d1aaacf8ed31ce57b42ce3bf2a48a66c3a5c \
+ --hash=sha256:80a2337e2dfb26950894c8301358961430a0304f7bfe729d34cc036474e9c9b1 \
+ --hash=sha256:824c867a38521d61d62b60aca7db7ca013a2b479e428a0db47d25d8ca5067410 \
+ --hash=sha256:842da42a63ecb32612bb7f5b9e9f8617eab9bc23bd58679a441f4150fcc51c96 \
+ --hash=sha256:8b7be9a6c06518967b641fb15032b1ed682fd3b0443f64078899c61034a0bca6 \
+ --hash=sha256:9099e443d4cc24ac6872e6a05f93205ba1a231b1a8917317b07c9ef2b955f1f4 \
+ --hash=sha256:94253be2b57ef2fea7ffe08996067aabf56a1eb9648342c9e3bad9e10c46e045 \
+ --hash=sha256:949551752930d5e478817e0b49956350d866b26578ced0042a61967e3fcccdea \
+ --hash=sha256:96334bb64d054e36fed346c50c4190bad9d7c586376204f50bede21a913bf942 \
+ --hash=sha256:965455eac8547f32b3181d5ec9ad8b9be500c10fe06193543efaaebe3e4ce70c \
+ --hash=sha256:967b47a0fd237aa17c2748fdb7425015c394a6fb57cdad1562e46a6eb070f96d \
+ --hash=sha256:9994f7db390c17fc2bd4c09dca722fd792ff8a49bb3bdace0c50a83f22f1767d \
+ --hash=sha256:9b60b465773a52c7d4705b0a751f7f1cdccf81dd12aee3b921b31a6e76b07b0e \
+ --hash=sha256:aeddf7b3b3f6e24ccf7d0edfe2d94094ea76b40e831c16eff5230e040ce3b76b \
+ --hash=sha256:c64c4cd0d50d5b2288ab1bcb26c7126c772bbdebdfadcd77225a77df01c4a57e \
+ --hash=sha256:cb987f14af7da7c24f803111dbc7392f5070fd350146af3345103f76ea82e339 \
+ --hash=sha256:dc4fa2240c9fceddaa815a58f29212826fafe43ce80ff666d38c4a03fb036955 \
+ --hash=sha256:e56b1fd529e5dde2d1452a7d72907b37ed1b4f07fdced5d8fb1e963acfff6749 \
+ --hash=sha256:e8630943143c6d6ca9aefc88bbe5e76c90553f4e1a3b2dc339e67dc34aa86f7e \
+ --hash=sha256:e8eb9a4e394926b93ad919cad1b0a918e9b4c846609e8c1cfb6b743683f64da0 \
+ --hash=sha256:e90352d7b610b4693fad0feea48549d4315d10f1eba5605421c92bb834e90170 \
+ --hash=sha256:f0b018e37608c3bfc6039a1dc4eb461e89334465a19916be0153c757a78ea426 \
+ --hash=sha256:f73adc05452fb85e7a12ed3f69c81540a8875960739082e6ea5e28c373a30774 \
+ --hash=sha256:fa33ead69ed133210d96af0c63448b1385df48b9c0247eda735c5896b9e6dbbf \
+ --hash=sha256:fc6d87a1c44df8d493ef44988a3ded751e284e02cdf785f746c2d357e99782a6 \
+ --hash=sha256:fd40af959173ea0d087b6b232b855cfeaa6738f47cb2a0fd10a7f4fa8b74293f \
+ --hash=sha256:fd65774ed7d65101b314808b6893e1a75b7664f680c3ef18d2e5c84d570fa393 \
+ --hash=sha256:fda0162b0dbfa5eaed6cdc708179fa27e148cb8490c7d62e5cf30713909658ea
# via psycopg
-psycopg-pool==3.2.1 \
- --hash=sha256:060b551d1b97a8d358c668be58b637780b884de14d861f4f5ecc48b7563aafb7 \
- --hash=sha256:6509a75c073590952915eddbba7ce8b8332a440a31e77bba69561483492829ad
+psycopg-pool==3.2.3 \
+ --hash=sha256:53bd8e640625e01b2927b2ad96df8ed8e8f91caea4597d45e7673fc7bbb85eb1 \
+ --hash=sha256:bb942f123bef4b7fbe4d55421bd3fb01829903c95c0f33fd42b7e94e5ac9b52a
# via psycopg
-pyasn1==0.6.0 \
- --hash=sha256:3a35ab2c4b5ef98e17dfdec8ab074046fbda76e281c5a706ccd82328cfc8f64c \
- --hash=sha256:cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473
+pyasn1==0.6.1 \
+ --hash=sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629 \
+ --hash=sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034
# via
# pyasn1-modules
# python-ldap
-pyasn1-modules==0.4.0 \
- --hash=sha256:831dbcea1b177b28c9baddf4c6d1013c24c3accd14a1873fffaa6a2e905f17b6 \
- --hash=sha256:be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b
+pyasn1-modules==0.4.1 \
+ --hash=sha256:49bfa96b45a292b711e986f222502c1c9a5e1f4e568fc30e2574a6c7d07838fd \
+ --hash=sha256:c28e2dbf9c06ad61c71a075c7e0f9fd0f1b0bb2d2ad4377f240d33ac2ab60a7c
# via python-ldap
python-ldap==3.4.4 \
--hash=sha256:7edb0accec4e037797705f3a05cbf36a9fde50d08c8f67f2aef99a2628fab828
# via
# -r contrib/container/requirements.in
# django-auth-ldap
-pyyaml==6.0.1 \
- --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
- --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \
- --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \
- --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \
- --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \
- --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \
- --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \
- --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \
- --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \
- --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \
- --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \
- --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \
- --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \
- --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \
- --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \
- --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \
- --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \
- --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \
- --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \
- --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \
- --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \
- --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \
- --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \
- --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \
- --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \
- --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \
- --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \
- --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \
- --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \
- --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \
- --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \
- --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \
- --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \
- --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \
- --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \
- --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \
- --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \
- --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \
- --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \
- --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \
- --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \
- --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \
- --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \
- --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \
- --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \
- --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \
- --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \
- --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \
- --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \
- --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \
- --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f
+pyyaml==6.0.2 \
+ --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \
+ --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \
+ --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \
+ --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \
+ --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \
+ --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \
+ --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \
+ --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \
+ --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \
+ --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \
+ --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \
+ --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \
+ --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \
+ --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \
+ --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \
+ --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \
+ --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \
+ --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \
+ --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \
+ --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \
+ --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \
+ --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \
+ --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \
+ --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \
+ --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \
+ --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \
+ --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \
+ --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \
+ --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \
+ --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \
+ --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \
+ --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \
+ --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \
+ --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \
+ --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \
+ --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \
+ --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \
+ --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \
+ --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \
+ --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \
+ --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \
+ --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \
+ --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \
+ --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \
+ --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \
+ --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \
+ --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \
+ --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \
+ --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \
+ --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \
+ --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \
+ --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \
+ --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4
# via -r contrib/container/requirements.in
-setuptools==70.3.0 \
- --hash=sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5 \
- --hash=sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc
+setuptools==75.2.0 \
+ --hash=sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec \
+ --hash=sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8
# via -r contrib/container/requirements.in
-sqlparse==0.5.0 \
- --hash=sha256:714d0a4932c059d16189f58ef5411ec2287a4360f17cdd0edd2d09d4c5087c93 \
- --hash=sha256:c204494cd97479d0e39f28c93d46c0b2d5959c7b9ab904762ea6c7af211c8663
+sqlparse==0.5.1 \
+ --hash=sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4 \
+ --hash=sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e
# via django
-typing-extensions==4.11.0 \
- --hash=sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0 \
- --hash=sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a
+typing-extensions==4.12.2 \
+ --hash=sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d \
+ --hash=sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8
# via
# psycopg
# psycopg-pool
-uv==0.1.38 \
- --hash=sha256:03242a734a572733f2b9a5dbb94517e918fe26fc01114b7c51d12296dfbb8f8b \
- --hash=sha256:067af2d986329db4fa3c7373017d49f0e16ddff23e483b7e5bc3a5a18ce08ea6 \
- --hash=sha256:0937ad16ae0e0b6bb6dd3c386f8fb33141ad08d1762eaacffb4d2b27fb466a17 \
- --hash=sha256:0e1d64ac437b0a14fbcec55b1c3f162fa24860711e0d855fcd9c672b149a122a \
- --hash=sha256:1be7aa46936c0351ccb1400ea95e5381b3f05fef772fa3b9f23af728cc175dea \
- --hash=sha256:309e73a3ec3a5a536a3efaf434270fc94b483069f1425765165c1c9d786c27fd \
- --hash=sha256:4251f9771d392d7badc1e5fb934b397b12ca00fef9d955207ade169cc1f7e872 \
- --hash=sha256:43772e7589f70e954b1ae29230e575ef9e4d8d769138a94dfa5ae7eaf1e26ac5 \
- --hash=sha256:4a6024256d38b77151e32876be9fcb99cf75df7a86b26e0161cc202bed558adf \
- --hash=sha256:5a98d6aacd4b57b7e00daf154919e7c9206fefdf40bd28cfb13efe0e0324d491 \
- --hash=sha256:8de6dbd8f348ee90af044f4cc7b6650521d25ba2d20a813c1e157a3f90069dd9 \
- --hash=sha256:9133e24db9bdd4f412eab69586d03294419825432a9a27ee1b510a4c01eb7b0b \
- --hash=sha256:92f65b6e4e5c8126501785af3629dc537d7c82caa56ac9336a86929c73d0e138 \
- --hash=sha256:afd85029923e712b6b2c45ddc1680c785392220876c766521e45778db3f71f8e \
- --hash=sha256:b0b15e51a0f8240969bc412ed0dd60cfe3f664b30173139ef263d71c596d631f \
- --hash=sha256:ea44c07605d1359a7d82bf42706dd86d341f15f4ca2e1f36e51626a7111c2ad5 \
- --hash=sha256:f87c9711493c53d32012a96b49c4d53aabdf7ed666cbf2c3fb55dd402a6b31a8
+uv==0.4.25 \
+ --hash=sha256:18100f0f36419a154306ed6211e3490bf18384cdf3f1a0950848bf64b62fa251 \
+ --hash=sha256:2d29a78f011ecc2f31c13605acb6574c2894c06d258b0f8d0dbb899986800450 \
+ --hash=sha256:2fc35b5273f1e018aecd66b70e0fd7d2eb6698853dde3e2fc644e7ebf9f825b1 \
+ --hash=sha256:3d7680795ea78cdbabbcce73d039b2651cf1fa635ddc1aa3082660f6d6255c50 \
+ --hash=sha256:4c55040e67470f2b73e95e432aba06f103a0b348ea0b9c6689b1029c8d9e89fd \
+ --hash=sha256:50c7d0d9e7f392f81b13bf3b7e37768d1486f2fc9d533a54982aa0ed11e4db23 \
+ --hash=sha256:578ae385fad6bd6f3868828e33d54994c716b315b1bc49106ec1f54c640837e4 \
+ --hash=sha256:6e981b1465e30102e41946adede9cb08051a5d70c6daf09f91a7ea84f0b75c08 \
+ --hash=sha256:7d266e02fefef930609328c31c075084295c3cb472bab3f69549fad4fd9d82b3 \
+ --hash=sha256:94fb2b454afa6bdfeeea4b4581c878944ca9cf3a13712e6762f245f5fbaaf952 \
+ --hash=sha256:a7022a71ff63a3838796f40e954b76bf7820fc27e96fe002c537e75ff8e34f1d \
+ --hash=sha256:a7c3a18c20ddb527d296d1222bddf42b78031c50b5b4609d426569b5fb61f5b0 \
+ --hash=sha256:aae9dcafd20d5ba978c8a4939ab942e8e2e155c109e9945207fbbd81d2892c9e \
+ --hash=sha256:bdbfd0c476b9e80a3f89af96aed6dd7d2782646311317a9c72614ccce99bb2ad \
+ --hash=sha256:be2a4fc4fcade9ea5e67e51738c95644360d6e59b6394b74fc579fb617f902f7 \
+ --hash=sha256:d39077cdfe3246885fcdf32e7066ae731a166101d063629f9cea08738f79e6a3 \
+ --hash=sha256:e02afb0f6d4b58718347f7d7cfa5a801e985ce42181ba971ed85ef149f6658ca \
+ --hash=sha256:ec181be2bda10651a3558156409ac481549983e0276d0e3645e3b1464e7f8715
# via -r contrib/container/requirements.in
-wheel==0.43.0 \
- --hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
- --hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
+wheel==0.44.0 \
+ --hash=sha256:2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f \
+ --hash=sha256:a29c3f2817e95ab89aa4660681ad547c0e9547f20e75b0562fe7723c9a2a9d49
# via -r contrib/container/requirements.in
diff --git a/contrib/dev_reqs/requirements.txt b/contrib/dev_reqs/requirements.txt
index c9d8353ef4..b1f8b7efae 100644
--- a/contrib/dev_reqs/requirements.txt
+++ b/contrib/dev_reqs/requirements.txt
@@ -104,9 +104,9 @@ jc==1.25.3 \
--hash=sha256:ea17a8578497f2da92f73924d9d403f4563ba59422fbceff7bb4a16cdf84a54f \
--hash=sha256:fa3140ceda6cba1210d1362f363cd79a0514741e8a1dd6167db2b2e2d5f24f7b
# via -r contrib/dev_reqs/requirements.in
-pygments==2.17.2 \
- --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \
- --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367
+pygments==2.18.0 \
+ --hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
+ --hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
# via jc
pyyaml==6.0.2 \
--hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \
diff --git a/contrib/packager.io/functions.sh b/contrib/packager.io/functions.sh
index 29c9d53ff4..5127f4ec90 100755
--- a/contrib/packager.io/functions.sh
+++ b/contrib/packager.io/functions.sh
@@ -13,6 +13,7 @@ function detect_docker() {
else
DOCKER="no"
fi
+ echo "# POI04| Running in docker: ${DOCKER}"
}
function detect_initcmd() {
@@ -30,6 +31,7 @@ function detect_initcmd() {
if [ "${DOCKER}" == "yes" ]; then
INIT_CMD="initctl"
fi
+ echo "# POI05| Using init command: ${INIT_CMD}"
}
function detect_ip() {
@@ -37,36 +39,36 @@ function detect_ip() {
if [ "${SETUP_NO_CALLS}" == "true" ]; then
# Use local IP address
- echo "# Getting the IP address of the first local IP address"
+ echo "# POI06| Getting the IP address of the first local IP address"
export INVENTREE_IP=$(hostname -I | awk '{print $1}')
else
# Use web service to get the IP address
- echo "# Getting the IP address of the server via web service"
+ echo "# POI06| Getting the IP address of the server via web service"
export INVENTREE_IP=$(curl -s https://checkip.amazonaws.com)
fi
- echo "IP address is ${INVENTREE_IP}"
+ echo "# POI06| IP address is ${INVENTREE_IP}"
}
function detect_python() {
# Detect if there is already a python version installed in /opt/inventree/env/lib
if test -f "${APP_HOME}/env/bin/python"; then
- echo "# Python environment already present"
+ echo "# POI07| Python environment already present"
# Extract earliest python version initialised from /opt/inventree/env/lib
SETUP_PYTHON=$(ls -1 ${APP_HOME}/env/bin/python* | sort | head -n 1)
- echo "# Found earlier used version: ${SETUP_PYTHON}"
+ echo "# POI07| Found earlier used version: ${SETUP_PYTHON}"
else
- echo "# No python environment found - using environment variable: ${SETUP_PYTHON}"
+ echo "# POI07| No python environment found - using environment variable: ${SETUP_PYTHON}"
fi
# Try to detect a python between 3.9 and 3.12 in reverse order
if [ -z "$(which ${SETUP_PYTHON})" ]; then
- echo "# Trying to detecting python3.${PYTHON_FROM} to python3.${PYTHON_TO} - using newest version"
+ echo "# POI07| Trying to detecting python3.${PYTHON_FROM} to python3.${PYTHON_TO} - using newest version"
for i in $(seq $PYTHON_TO -1 $PYTHON_FROM); do
- echo "# Checking for python3.${i}"
+ echo "# POI07| Checking for python3.${i}"
if [ -n "$(which python3.${i})" ]; then
SETUP_PYTHON="python3.${i}"
- echo "# Found python3.${i} installed - using for setup ${SETUP_PYTHON}"
+ echo "# POI07| Found python3.${i} installed - using for setup ${SETUP_PYTHON}"
break
fi
done
@@ -75,12 +77,14 @@ function detect_python() {
# Ensure python can be executed - abort if not
if [ -z "$(which ${SETUP_PYTHON})" ]; then
echo "${On_Red}"
- echo "# Python ${SETUP_PYTHON} not found - aborting!"
- echo "# Please ensure python can be executed with the command '$SETUP_PYTHON' by the current user '$USER'."
- echo "# If you are using a different python version, please set the environment variable SETUP_PYTHON to the correct command - eg. 'python3.10'."
+ echo "# POI07| Python ${SETUP_PYTHON} not found - aborting!"
+ echo "# POI07| Please ensure python can be executed with the command '$SETUP_PYTHON' by the current user '$USER'."
+ echo "# POI07| If you are using a different python version, please set the environment variable SETUP_PYTHON to the correct command - eg. 'python3.10'."
echo "${Color_Off}"
exit 1
fi
+
+ echo "# POI07| Using python command: ${SETUP_PYTHON}"
}
function get_env() {
@@ -95,7 +99,7 @@ function get_env() {
done
if [ -n "${SETUP_DEBUG}" ]; then
- echo "Done getting env $envname: ${!envname}"
+ echo "# POI02| Done getting env $envname: ${!envname}"
fi
}
@@ -103,7 +107,7 @@ function detect_local_env() {
# Get all possible envs for the install
if [ -n "${SETUP_DEBUG}" ]; then
- echo "# Printing local envs - before #++#"
+ echo "# POI02| Printing local envs - before #++#"
printenv
fi
@@ -113,7 +117,7 @@ function detect_local_env() {
done
if [ -n "${SETUP_DEBUG}" ]; then
- echo "# Printing local envs - after #++#"
+ echo "# POI02| Printing local envs - after #++#"
printenv
fi
}
@@ -121,15 +125,17 @@ function detect_local_env() {
function detect_envs() {
# Detect all envs that should be passed to setup commands
- echo "# Setting base environment variables"
+ echo "# POI03| Setting base environment variables"
export INVENTREE_CONFIG_FILE=${INVENTREE_CONFIG_FILE:-${CONF_DIR}/config.yaml}
if test -f "${INVENTREE_CONFIG_FILE}"; then
- echo "# Using existing config file: ${INVENTREE_CONFIG_FILE}"
+ echo "# POI03| Using existing config file: ${INVENTREE_CONFIG_FILE}"
# Install parser
+ echo "# POI03| Installing requirements"
pip install --require-hashes -r ${APP_HOME}/contrib/dev_reqs/requirements.txt -q
+ echo "# POI03| Installed requirements"
# Load config
export INVENTREE_CONF_DATA=$(cat ${INVENTREE_CONFIG_FILE} | jc --yaml)
@@ -149,10 +155,10 @@ function detect_envs() {
export INVENTREE_DB_HOST=$(jq -r '.[].database.HOST' <<< ${INVENTREE_CONF_DATA})
export INVENTREE_DB_PORT=$(jq -r '.[].database.PORT' <<< ${INVENTREE_CONF_DATA})
else
- echo "# No config file found: ${INVENTREE_CONFIG_FILE}, using envs or defaults"
+ echo "# POI03| No config file found: ${INVENTREE_CONFIG_FILE}, using envs or defaults"
if [ -n "${SETUP_DEBUG}" ]; then
- echo "# Print current envs"
+ echo "# POI03| Print current envs"
printenv | grep INVENTREE_
printenv | grep SETUP_
fi
@@ -175,43 +181,43 @@ function detect_envs() {
fi
# For debugging pass out the envs
- echo "# Collected environment variables:"
- echo "# INVENTREE_MEDIA_ROOT=${INVENTREE_MEDIA_ROOT}"
- echo "# INVENTREE_STATIC_ROOT=${INVENTREE_STATIC_ROOT}"
- echo "# INVENTREE_BACKUP_DIR=${INVENTREE_BACKUP_DIR}"
- echo "# INVENTREE_PLUGINS_ENABLED=${INVENTREE_PLUGINS_ENABLED}"
- echo "# INVENTREE_PLUGIN_FILE=${INVENTREE_PLUGIN_FILE}"
- echo "# INVENTREE_SECRET_KEY_FILE=${INVENTREE_SECRET_KEY_FILE}"
- echo "# INVENTREE_DB_ENGINE=${INVENTREE_DB_ENGINE}"
- echo "# INVENTREE_DB_NAME=${INVENTREE_DB_NAME}"
- echo "# INVENTREE_DB_USER=${INVENTREE_DB_USER}"
+ echo "# POI03| Collected environment variables:"
+ echo "# POI03| INVENTREE_MEDIA_ROOT=${INVENTREE_MEDIA_ROOT}"
+ echo "# POI03| INVENTREE_STATIC_ROOT=${INVENTREE_STATIC_ROOT}"
+ echo "# POI03| INVENTREE_BACKUP_DIR=${INVENTREE_BACKUP_DIR}"
+ echo "# POI03| INVENTREE_PLUGINS_ENABLED=${INVENTREE_PLUGINS_ENABLED}"
+ echo "# POI03| INVENTREE_PLUGIN_FILE=${INVENTREE_PLUGIN_FILE}"
+ echo "# POI03| INVENTREE_SECRET_KEY_FILE=${INVENTREE_SECRET_KEY_FILE}"
+ echo "# POI03| INVENTREE_DB_ENGINE=${INVENTREE_DB_ENGINE}"
+ echo "# POI03| INVENTREE_DB_NAME=${INVENTREE_DB_NAME}"
+ echo "# POI03| INVENTREE_DB_USER=${INVENTREE_DB_USER}"
if [ -n "${SETUP_DEBUG}" ]; then
- echo "# INVENTREE_DB_PASSWORD=${INVENTREE_DB_PASSWORD}"
+ echo "# POI03| INVENTREE_DB_PASSWORD=${INVENTREE_DB_PASSWORD}"
fi
- echo "# INVENTREE_DB_HOST=${INVENTREE_DB_HOST}"
- echo "# INVENTREE_DB_PORT=${INVENTREE_DB_PORT}"
+ echo "# POI03| INVENTREE_DB_HOST=${INVENTREE_DB_HOST}"
+ echo "# POI03| INVENTREE_DB_PORT=${INVENTREE_DB_PORT}"
}
function create_initscripts() {
# Make sure python env exists
if test -f "${APP_HOME}/env"; then
- echo "# python environment already present - skipping"
+ echo "# POI09| python environment already present - skipping"
else
- echo "# Setting up python environment"
+ echo "# POI09| Setting up python environment"
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && ${SETUP_PYTHON} -m venv env"
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && env/bin/pip install invoke wheel"
# Check INSTALLER_EXTRA exists and load it
if test -f "${APP_HOME}/INSTALLER_EXTRA"; then
- echo "# Loading extra packages from INSTALLER_EXTRA"
+ echo "# POI09| Loading extra packages from INSTALLER_EXTRA"
source ${APP_HOME}/INSTALLER_EXTRA
fi
if [ -n "${SETUP_EXTRA_PIP}" ]; then
- echo "# Installing extra pip packages"
+ echo "# POI09| Installing extra pip packages"
if [ -n "${SETUP_DEBUG}" ]; then
- echo "# Extra pip packages: ${SETUP_EXTRA_PIP}"
+ echo "# POI09| Extra pip packages: ${SETUP_EXTRA_PIP}"
fi
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && env/bin/pip install ${SETUP_EXTRA_PIP}"
# Write extra packages to INSTALLER_EXTRA
@@ -221,41 +227,45 @@ function create_initscripts() {
# Unlink default config if it exists
if test -f "/etc/nginx/sites-enabled/default"; then
- echo "# Unlinking default nginx config\n# Old file still in /etc/nginx/sites-available/default"
+ echo "# POI09| Unlinking default nginx config\n# POI09| Old file still in /etc/nginx/sites-available/default"
sudo unlink /etc/nginx/sites-enabled/default
+ echo "# POI09| Unlinked default nginx config"
fi
# Create InvenTree specific nginx config
- echo "# Stopping nginx"
+ echo "# POI09| Stopping nginx"
${INIT_CMD} stop nginx
- echo "# Setting up nginx to ${SETUP_NGINX_FILE}"
+ echo "# POI09| Stopped nginx"
+ echo "# POI09| Setting up nginx to ${SETUP_NGINX_FILE}"
# Always use the latest nginx config; important if new headers are added / needed for security
cp ${APP_HOME}/contrib/packager.io/nginx.prod.conf ${SETUP_NGINX_FILE}
sed -i s/inventree-server:8000/localhost:6000/g ${SETUP_NGINX_FILE}
sed -i s=var/www=opt/inventree/data=g ${SETUP_NGINX_FILE}
# Start nginx
- echo "# Starting nginx"
+ echo "# POI09| Starting nginx"
${INIT_CMD} start nginx
+ echo "# POI09| Started nginx"
- echo "# (Re)creating init scripts"
+ echo "# POI09| (Re)creating init scripts"
# This resets scale parameters to a known state
inventree scale web="1" worker="1"
- echo "# Enabling InvenTree on boot"
+ echo "# POI09| Enabling InvenTree on boot"
${INIT_CMD} enable inventree
+ echo "# POI09| Enabled InvenTree on boot"
}
function create_admin() {
# Create data for admin users - stop with setting SETUP_ADMIN_NOCREATION to true
if [ "${SETUP_ADMIN_NOCREATION}" == "true" ]; then
- echo "# Admin creation is disabled - skipping"
+ echo "# POI10| Admin creation is disabled - skipping"
return
fi
if test -f "${SETUP_ADMIN_PASSWORD_FILE}"; then
- echo "# Admin data already exists - skipping"
+ echo "# POI10| Admin data already exists - skipping"
else
- echo "# Creating admin user data"
+ echo "# POI10| Creating admin user data"
# Static admin data
export INVENTREE_ADMIN_USER=${INVENTREE_ADMIN_USER:-admin}
@@ -270,13 +280,15 @@ function create_admin() {
}
function start_inventree() {
- echo "# Starting InvenTree"
+ echo "# POI15| Starting InvenTree"
${INIT_CMD} start inventree
+ echo "# POI15| Started InvenTree"
}
function stop_inventree() {
- echo "# Stopping InvenTree"
+ echo "# POI11| Stopping InvenTree"
${INIT_CMD} stop inventree
+ echo "# POI11| Stopped InvenTree"
}
function update_or_install() {
@@ -285,23 +297,23 @@ function update_or_install() {
chown ${APP_USER}:${APP_GROUP} ${APP_HOME} -R
# Run update as app user
- echo "# Updating InvenTree"
- sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && pip install wheel"
- sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && invoke update | sed -e 's/^/# inv update| /;'"
+ echo "# POI12| Updating InvenTree"
+ sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && pip install uv wheel"
+ sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && invoke update --uv | sed -e 's/^/# POI12| u | /;'"
# Make sure permissions are correct again
- echo "# Set permissions for data dir and media: ${DATA_DIR}"
+ echo "# POI12| Set permissions for data dir and media: ${DATA_DIR}"
chown ${APP_USER}:${APP_GROUP} ${DATA_DIR} -R
chown ${APP_USER}:${APP_GROUP} ${CONF_DIR} -R
}
function set_env() {
- echo "# Setting up InvenTree config values"
+ echo "# POI13| Setting up InvenTree config values"
inventree config:set INVENTREE_CONFIG_FILE=${INVENTREE_CONFIG_FILE}
# Changing the config file
- echo "# Writing the settings to the config file ${INVENTREE_CONFIG_FILE}"
+ echo "# POI13| Writing the settings to the config file ${INVENTREE_CONFIG_FILE}"
# Media Root
sed -i s=#media_root:\ \'/home/inventree/data/media\'=media_root:\ \'${INVENTREE_MEDIA_ROOT}\'=g ${INVENTREE_CONFIG_FILE}
# Static Root
@@ -332,23 +344,28 @@ function set_env() {
# Fixing the permissions
chown ${APP_USER}:${APP_GROUP} ${DATA_DIR} ${INVENTREE_CONFIG_FILE}
+
+ echo "# POI13| Done setting up InvenTree config values"
}
function set_site() {
# Ensure IP is known
if [ -z "${INVENTREE_IP}" ]; then
- echo "# No IP address found - skipping"
+ echo "# POI14| No IP address found - skipping"
return
fi
# Check if INVENTREE_SITE_URL in inventree config
if [ -z "$(inventree config:get INVENTREE_SITE_URL)" ]; then
- echo "# Setting up InvenTree site URL"
+ echo "# POI14| Setting up InvenTree site URL"
inventree config:set INVENTREE_SITE_URL=http://${INVENTREE_IP}
+ else
+ echo "# POI14| Site URL already set - skipping"
fi
}
function final_message() {
+ echo "# POI16| Printing Final message"
echo -e "####################################################################################"
echo -e "This InvenTree install uses nginx, the settings for the webserver can be found in"
echo -e "${SETUP_NGINX_FILE}"
@@ -362,10 +379,12 @@ function final_message() {
function update_checks() {
- echo "# Running upgrade"
+ echo "# POI08| Running upgrade"
local old_version=$1
local old_version_rev=$(echo ${old_version} | cut -d'-' -f1 | cut -d'.' -f2)
- echo "# Old version is: ${old_version} - release: ${old_version_rev}"
+ local new_version=$(dpkg-query --show --showformat='${Version}' inventree)
+ local new_version_rev=$(echo ${new_version} | cut -d'-' -f1 | cut -d'.' -f2)
+ echo "# POI08| Old version is: ${old_version} | ${old_version_rev} - updating to ${new_version} | ${old_version_rev}"
local ABORT=false
function check_config_value() {
@@ -378,25 +397,25 @@ function update_checks() {
value=$(jq -r ".[].${config_key}" <<< ${INVENTREE_CONF_DATA})
fi
if [ -z "${value}" ] || [ "$value" == "null" ]; then
- echo "# No setting for ${name} found - please set it manually either in ${INVENTREE_CONFIG_FILE} under '${config_key}' or with 'inventree config:set ${env_key}=value'"
+ echo "# POI08| No setting for ${name} found - please set it manually either in ${INVENTREE_CONFIG_FILE} under '${config_key}' or with 'inventree config:set ${env_key}=value'"
ABORT=true
else
- echo "# Found setting for ${name} - ${value}"
+ echo "# POI08| Found setting for ${name} - ${value}"
fi
}
# Custom checks if old version is below 0.8.0
if [ "${old_version_rev}" -lt "9" ]; then
- echo "# Old version is below 0.9.0 - You might be missing some configs"
+ echo "# POI08| Old version is below 0.9.0 - You might be missing some configs"
# Check for BACKUP_DIR and SITE_URL in INVENTREE_CONF_DATA and config
check_config_value "INVENTREE_SITE_URL" "site_url" "site URL"
check_config_value "INVENTREE_BACKUP_DIR" "backup_dir" "backup dir"
if [ "${ABORT}" = true ]; then
- echo "# Aborting - please set the missing values and run the update again"
+ echo "# POI08| Aborting - please set the missing values and run the update again"
exit 1
fi
- echo "# All checks passed - continuing with the update"
+ echo "# POI08| All checks passed - continuing with the update"
fi
}
diff --git a/contrib/packager.io/postinstall.sh b/contrib/packager.io/postinstall.sh
index fd1e85a4b1..4e5734fb5a 100755
--- a/contrib/packager.io/postinstall.sh
+++ b/contrib/packager.io/postinstall.sh
@@ -3,15 +3,18 @@
# packager.io postinstall script
#
+echo "# POI01| Running postinstall script - start - $(date)"
exec > >(tee ${APP_HOME}/log/setup_$(date +"%F_%H_%M_%S").log) 2>&1
PATH=${APP_HOME}/env/bin:${APP_HOME}/:/sbin:/bin:/usr/sbin:/usr/bin:
# import functions
+echo "# POI01| Importing functions"
. ${APP_HOME}/contrib/packager.io/functions.sh
+echo "# POI01| Functions imported"
# Envs that should be passed to setup commands
-export SETUP_ENVS=PATH,APP_HOME,INVENTREE_MEDIA_ROOT,INVENTREE_STATIC_ROOT,INVENTREE_BACKUP_DIR,INVENTREE_PLUGINS_ENABLED,INVENTREE_PLUGIN_FILE,INVENTREE_CONFIG_FILE,INVENTREE_SECRET_KEY_FILE,INVENTREE_DB_ENGINE,INVENTREE_DB_NAME,INVENTREE_DB_USER,INVENTREE_DB_PASSWORD,INVENTREE_DB_HOST,INVENTREE_DB_PORT,INVENTREE_ADMIN_USER,INVENTREE_ADMIN_EMAIL,INVENTREE_ADMIN_PASSWORD,SETUP_NGINX_FILE,SETUP_ADMIN_PASSWORD_FILE,SETUP_NO_CALLS,SETUP_DEBUG,SETUP_EXTRA_PIP,SETUP_PYTHON,SETUP_ADMIN_NOCREATION
+export SETUP_ENVS=PATH,APP_HOME,INVENTREE_MEDIA_ROOT,INVENTREE_STATIC_ROOT,INVENTREE_BACKUP_DIR,INVENTREE_SITE_URL,INVENTREE_PLUGINS_ENABLED,INVENTREE_PLUGIN_FILE,INVENTREE_CONFIG_FILE,INVENTREE_SECRET_KEY_FILE,INVENTREE_DB_ENGINE,INVENTREE_DB_NAME,INVENTREE_DB_USER,INVENTREE_DB_PASSWORD,INVENTREE_DB_HOST,INVENTREE_DB_PORT,INVENTREE_ADMIN_USER,INVENTREE_ADMIN_EMAIL,INVENTREE_ADMIN_PASSWORD,SETUP_NGINX_FILE,SETUP_ADMIN_PASSWORD_FILE,SETUP_NO_CALLS,SETUP_DEBUG,SETUP_EXTRA_PIP,SETUP_PYTHON,SETUP_ADMIN_NOCREATION
# Get the envs
detect_local_env
@@ -37,9 +40,9 @@ detect_ip
detect_python
# Check if we are updating and need to alert
-echo "# Checking if update checks are needed"
+echo "# POI08| Checking if update checks are needed"
if [ -z "$2" ]; then
- echo "# Normal install - no need for checks"
+ echo "# POI08| Normal install - no need for checks"
else
update_checks $2
fi
@@ -60,3 +63,4 @@ start_inventree
# show info
final_message
+echo "# POI17| Running postinstall script - done - $(date)"
diff --git a/contrib/packager.io/preinstall.sh b/contrib/packager.io/preinstall.sh
index 0e59daebb2..f15fb49e06 100755
--- a/contrib/packager.io/preinstall.sh
+++ b/contrib/packager.io/preinstall.sh
@@ -2,14 +2,22 @@
#
# packager.io preinstall/preremove script
#
+echo "# PRI01| Running preinstall script - start - $(date)"
PATH=${APP_HOME}/env/bin:${APP_HOME}/:/sbin:/bin:/usr/sbin:/usr/bin:
# Envs that should be passed to setup commands
export SETUP_ENVS=PATH,APP_HOME,INVENTREE_MEDIA_ROOT,INVENTREE_STATIC_ROOT,INVENTREE_BACKUP_DIR,INVENTREE_PLUGINS_ENABLED,INVENTREE_PLUGIN_FILE,INVENTREE_CONFIG_FILE,INVENTREE_SECRET_KEY_FILE,INVENTREE_DB_ENGINE,INVENTREE_DB_NAME,INVENTREE_DB_USER,INVENTREE_DB_PASSWORD,INVENTREE_DB_HOST,INVENTREE_DB_PORT,INVENTREE_ADMIN_USER,INVENTREE_ADMIN_EMAIL,INVENTREE_ADMIN_PASSWORD,SETUP_NGINX_FILE,SETUP_ADMIN_PASSWORD_FILE,SETUP_NO_CALLS,SETUP_DEBUG,SETUP_EXTRA_PIP,SETUP_PYTHON
if test -f "${APP_HOME}/env/bin/pip"; then
- echo "# Clearing precompiled files"
- sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && invoke clear-generated"
+ # Check if clear-generated is available
+ if sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && invoke int.clear-generated --help" > /dev/null 2>&1; then
+ echo "# PRI02| Clearing precompiled files"
+ sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && invoke int.clear-generated"
+ else
+ echo "# PRI02| Clearing precompiled files - skipping"
+ fi
else
- echo "# No python environment found - skipping"
+ echo "# PRI02| No python environment found - skipping"
fi
+
+echo "# PRI03| Running preinstall script - done - $(date)"
diff --git a/crowdin.yml b/crowdin.yml
index e6851f3632..311bbc8e9b 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,8 +1,14 @@
+# Configuration file for Crowdin project integration
+# See: https://crowdin.com/project/inventree
+
"commit_message": "Fix: New translations %original_file_name% from Crowdin"
"append_commit_message": false
+"preserve_hierarchy": true
files:
- source: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po
+ dest: /%original_path%/%original_file_name%
translation: /src/backend/InvenTree/locale/%two_letters_code%/LC_MESSAGES/%original_file_name%
- source: /src/frontend/src/locales/en/messages.po
+ dest: /%original_path%/%original_file_name%
translation: /src/frontend/src/locales/%two_letters_code%/%original_file_name%
diff --git a/docs/ci/check_mkdocs_config.py b/docs/ci/check_mkdocs_config.py
index 93a3afe0c8..c1f803c7c2 100644
--- a/docs/ci/check_mkdocs_config.py
+++ b/docs/ci/check_mkdocs_config.py
@@ -10,7 +10,7 @@ tld = os.path.abspath(os.path.join(here, '..'))
config_file = os.path.join(tld, 'mkdocs.yml')
-with open(config_file, 'r') as f:
+with open(config_file, encoding='utf-8') as f:
data = yaml.load(f, yaml.BaseLoader)
assert data['strict'] == 'true'
diff --git a/docs/docs/api/api.md b/docs/docs/api/api.md
index 7f2c9328d0..0ac6366b47 100644
--- a/docs/docs/api/api.md
+++ b/docs/docs/api/api.md
@@ -22,10 +22,10 @@ The API is self-documenting, and the documentation is provided alongside any Inv
### Generating Schema File
-If you want to generate the API schema file yourself (for example to use with an external client, use the `invoke schema` command. Run with the `-help` command to see available options.
+If you want to generate the API schema file yourself (for example to use with an external client, use the `invoke dev.schema` command. Run with the `-help` command to see available options.
```
-invoke schema -help
+invoke dev.schema -help
```
## Authentication
diff --git a/docs/docs/barcodes/barcodes.md b/docs/docs/barcodes/barcodes.md
index 22c07cc37f..a51c3dcc96 100644
--- a/docs/docs/barcodes/barcodes.md
+++ b/docs/docs/barcodes/barcodes.md
@@ -56,3 +56,11 @@ If no match is found for the scanned barcode, the following error message is dis
## App Integration
Barcode scanning is a key feature of the [companion mobile app](../app/barcode.md).
+
+## Barcode History
+
+If enabled, InvenTree can retain logs of the most recent barcode scans. This can be very useful for debugging or auditing purpopes.
+
+Refer to the [barcode settings](../settings/global.md#barcodes) to enable barcode history logging.
+
+The barcode history can be viewed via the admin panel in the web interface.
diff --git a/docs/docs/demo.md b/docs/docs/demo.md
index 7d097fca25..031a735113 100644
--- a/docs/docs/demo.md
+++ b/docs/docs/demo.md
@@ -16,6 +16,7 @@ The demo instance has a number of user accounts which you can use to explore the
| Username | Password | Staff Access | Enabled | Description |
| -------- | -------- | ------------ | ------- | ----------- |
+| noaccess | youshallnotpass | No | Yes | Can login, but has no permissions |
| allaccess | nolimits | No | Yes | View / create / edit all pages and items |
| reader | readonly | No | Yes | Can view all pages but cannot create, edit or delete database records |
| engineer | partsonly | No | Yes | Can manage parts, view stock, but no access to purchase orders or sales orders |
@@ -23,3 +24,35 @@ The demo instance has a number of user accounts which you can use to explore the
| ian | inactive | No | No | Inactive account, cannot log in |
| susan | inactive | No | No | Inactive account, cannot log in |
| admin | inventree | Yes | Yes | Superuser account, can access all parts of the system |
+
+### Dataset
+
+The demo instance is populated with a sample dataset, which is reset every 24 hours.
+
+The source data used in the demo instance can be found on our [GitHub page](https://github.com/inventree/demo-dataset).
+
+### Local Setup
+
+If you wish to install the demo dataset locally (for initial testing), you can run the following command (via [invoke](./start/invoke.md)):
+
+```bash
+invoke dev.setup-test -i
+```
+
+*(Note: The command above may be slightly different if you are running in docker.)*
+
+This will install the demo dataset into your local InvenTree instance.
+
+!!! warning "Warning"
+ This command will **delete all existing data** in your InvenTree instance! It is not intended to be used on a production system, or loaded into an existing dataset.
+
+### Clear Data
+
+To clear demo data from your instance, and start afresh with a clean database, you can run the following command (via [invoke](./start/invoke.md)):
+
+```bash
+invoke dev.delete-data
+```
+
+!!! warning "Warning"
+ This command will **delete all existing data** in your InvenTree instance, including any data that you have added yourself.
diff --git a/docs/docs/develop/contributing.md b/docs/docs/develop/contributing.md
index 931d8111fe..bca21b483a 100644
--- a/docs/docs/develop/contributing.md
+++ b/docs/docs/develop/contributing.md
@@ -23,7 +23,7 @@ To setup a development environment using [docker](../start/docker.md), run the f
```bash
git clone https://github.com/inventree/InvenTree.git && cd InvenTree
docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke install
-docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke setup-test --dev
+docker compose --project-directory . -f contrib/container/dev-docker-compose.yml run --rm inventree-dev-server invoke dev.setup-test --dev
docker compose --project-directory . -f contrib/container/dev-docker-compose.yml up -d
```
@@ -34,25 +34,28 @@ A "bare metal" development setup can be installed as follows:
```bash
git clone https://github.com/inventree/InvenTree.git && cd InvenTree
python3 -m venv env && source env/bin/activate
-pip install invoke && invoke
-pip install invoke && invoke setup-dev --tests
+pip install django invoke && invoke
+invoke dev.setup-dev --tests
```
Read the [InvenTree setup documentation](../start/intro.md) for a complete installation reference guide.
+!!! note "Required Packages"
+ Depending on your system, you may need to install additional software packages as required.
+
### Setup Devtools
Run the following command to set up all toolsets for development.
```bash
-invoke setup-dev
+invoke dev.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 errors.*
## Branches and Versioning
-InvenTree roughly follow the [GitLab flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html) branching style, to allow simple management of multiple tagged releases, short-lived branches, and development on the main branch.
+InvenTree roughly follow the [GitLab flow](https://about.gitlab.com/topics/version-control/what-are-gitlab-flow-best-practices/) branching style, to allow simple management of multiple tagged releases, short-lived branches, and development on the main branch.
There are nominally 5 active branches:
- `master` - The main development branch
@@ -169,19 +172,20 @@ The various github actions can be found in the `./github/workflows` directory
### Run tests locally
To run test locally, use:
+
```
-invoke test
+invoke dev.test
```
To run only partial tests, for example for a module use:
```
-invoke test --runtest order
+invoke dev.test --runtest order
```
To see all the available options:
```
-invoke test --help
+invoke dev.test --help
```
## Code Style
diff --git a/docs/docs/develop/devcontainer.md b/docs/docs/develop/devcontainer.md
index 930e9775b9..bb86080ba2 100644
--- a/docs/docs/develop/devcontainer.md
+++ b/docs/docs/develop/devcontainer.md
@@ -52,7 +52,7 @@ Tasks can help you executing scripts. You can run them by open the command panel
#### Setup demo dataset
-If you need some demo test-data, run the `setup-test` task. This will import an `admin` user with the password `inventree`. For more info on what this dataset contains see [inventree/demo-dataset](https://github.com/inventree/demo-dataset).
+If you need some demo test-data, run the `setup-test` task. This will import an `admin` user with the password `inventree`. For more info on what this dataset contains see [inventree/demo-dataset](../demo.md).
#### Setup a superuser
diff --git a/docs/docs/develop/react-frontend.md b/docs/docs/develop/react-frontend.md
index ead305c912..ab841e9008 100644
--- a/docs/docs/develop/react-frontend.md
+++ b/docs/docs/develop/react-frontend.md
@@ -1,37 +1,48 @@
---
-title: Platform UI / React
+title: React Frontend Development
---
## Setup
-The new React-based UI will not be available by default. In order to set your development environment up to view the frontend, follow this guide.
-The new UI requires a separate frontend server to run to serve data for the new Frontend.
+The following documentation details how to setup and run a development installation of the InvenTree frontend user interface.
+
+### Prerequisites
+
+To run the frontend development server, you will need to have the following installed:
+
+- Node.js
+- Yarn
+
+!!! note "Devcontainer"
+ The [devcontainer](./devcontainer.md) setup already includes all prerequisite packages, and is ready to run the frontend server.
### Install
-The React frontend requires its own packages that aren't installed via the usual invoke tasks.
+The React frontend requires its own packages that aren't installed via the usual [invoke](../start/invoke.md) tasks.
#### Docker
Run the following command:
-`docker compose run inventree-dev-server invoke frontend-compile`
+`docker compose run inventree-dev-server invoke int.frontend-compile`
This will install the required packages for running the React frontend on your InvenTree dev server.
#### Devcontainer
+
!!! warning "This guide assumes you already have a running devcontainer"
+
!!! info "All these steps are performed within Visual Studio Code"
Open a new terminal from the top menu by clicking `Terminal > New Terminal`
Make sure this terminal is running within the virtual env. The start of the last line should display `(venv)`
-Run the command `invoke frontend-compile`. Wait for this to finish
+Run the command `invoke int.frontend-compile`. Wait for this to finish
### Running
After finishing the install, you need to launch a frontend server to be able to view the new UI.
Using the previously described ways of running commands, execute the following:
-`invoke frontend-dev` in your environment
+`invoke dev.frontend-server` in your environment
This command does not run as a background daemon, and will occupy the window it's ran in.
### Accessing
@@ -40,7 +51,7 @@ When the frontend server is running, it will be available on port 5173.
i.e: https://localhost:5173/
!!! note "Backend Server"
- The InvenTree backend server must also be running, for the frontend interface to have something to connect to! To launch a backend server, use the `invoke server` command.
+ The InvenTree backend server must also be running, for the frontend interface to have something to connect to! To launch a backend server, use the `invoke dev.server` command.
### Debugging
@@ -77,3 +88,27 @@ When running the frontend development server, some features may not work entirel
#### SSO Login
When logging into the frontend dev server via SSO, the redirect URL may not redirect correctly.
+
+## Testing
+
+The frontend codebase it tested using [Playwright](https://playwright.dev/). There are a large number of tests that cover the frontend codebase, which are run automatically as part of the CI pipeline.
+
+### Install Playwright
+
+To install the required packages to run the tests, you can use the following command:
+
+```bash
+cd src/frontend
+npx playwright install
+```
+
+### Running Tests
+
+To run the tests locally, in an interactive editor, you can use the following command:
+
+```bash
+cd src/frontend
+npx playwright test --ui
+```
+
+This will first launch the backend server (at `http://localhost:8000`), and then run the tests against the frontend server (at `http://localhost:5173`). An interactive browser window will open, and you can run the tests individually or as a group.
diff --git a/docs/docs/extend/plugins/panel.md b/docs/docs/extend/plugins/panel.md
index f91c175ab1..d19c568475 100644
--- a/docs/docs/extend/plugins/panel.md
+++ b/docs/docs/extend/plugins/panel.md
@@ -4,6 +4,12 @@ title: Panel Mixin
## PanelMixin
+!!! warning "Legacy User Interface"
+ This plugin mixin class is designed specifically for the the *legacy* user interface (which is rendered on the server using django templates). The new user interface (which is rendered on the client using React) does not support this mixin class. Instead, refer to the new [User Interface Mixin](./ui.md) class.
+
+!!! warning "Deprecated Class"
+ This mixin class is considered deprecated, and will be removed in the 1.0.0 release.
+
The `PanelMixin` enables plugins to render custom content to "panels" on individual pages in the web interface.
Most pages in the web interface support multiple panels, which are selected via the sidebar menu on the left side of the screen:
diff --git a/docs/docs/extend/plugins/ui.md b/docs/docs/extend/plugins/ui.md
new file mode 100644
index 0000000000..16988ca2e3
--- /dev/null
+++ b/docs/docs/extend/plugins/ui.md
@@ -0,0 +1,186 @@
+---
+title: User Interface Mixin
+---
+
+## User Interface Mixin
+
+The `UserInterfaceMixin` class provides a set of methods to implement custom functionality for the InvenTree web interface.
+
+### Enable User Interface Mixin
+
+To enable user interface plugins, the global setting `ENABLE_PLUGINS_INTERFACE` must be enabled, in the [plugin settings](../../settings/global.md#plugin-settings).
+
+## Custom UI Features
+
+The InvenTree user interface functionality can be extended in various ways using plugins. Multiple types of user interface *features* can be added to the InvenTree user interface.
+
+The entrypoint for user interface plugins is the `UserInterfaceMixin` class, which provides a number of methods which can be overridden to provide custom functionality. The `get_ui_features` method is used to extract available user interface features from the plugin:
+
+::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_features
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+Note here that the `get_ui_features` calls other methods to extract the available features from the plugin, based on the requested feature type. These methods can be overridden to provide custom functionality.
+
+!!! info "Implementation"
+ Your custom plugin does not need to override the `get_ui_features` method. Instead, override one of the other methods to provide custom functionality.
+
+### UIFeature Return Type
+
+The `get_ui_features` method should return a list of `UIFeature` objects, which define the available user interface features for the plugin. The `UIFeature` class is defined as follows:
+
+::: plugin.base.ui.mixins.UIFeature
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+Note that the *options* field contains fields which may be specific to a particular feature type - read the documentation below on each feature type for more information.
+
+### Dynamic Feature Loading
+
+Each of the provided feature types can be loaded dynamically by the plugin, based on the information provided in the API request. For example, the plugin can choose to show or hide a particular feature based on the user permissions, or the current state of the system.
+
+For examples of this dynamic feature loading, refer to the [sample plugin](#sample-plugin) implementation which demonstrates how to dynamically load custom panels based on the provided context.
+
+### Javascript Source Files
+
+The rendering function for the custom user interface features expect that the plugin provides a Javascript source file which contains the necessary code to render the custom content. The path to this file should be provided in the `source` field of the `UIFeature` object.
+
+Note that the `source` field can include the name of the function to be called (if this differs from the expected default function name).
+
+For example:
+
+```
+"source": "/static/plugins/my_plugin/my_plugin.js:my_custom_function"
+```
+
+## Available UI Feature Types
+
+The following user interface feature types are available:
+
+### Dashboard Items
+
+The InvenTree dashboard is a collection of "items" which are displayed on the main dashboard page. Custom dashboard items can be added to the dashboard by implementing the `get_ui_dashboard_items` method:
+
+::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_dashboard_items
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+#### Dashboard Item Options
+
+The *options* field in the returned `UIFeature` object can contain the following properties:
+
+::: plugin.base.ui.mixins.CustomDashboardItemOptions
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+#### Source Function
+
+The frontend code expects a path to a javascript file containing a function named `renderDashboardItem` which will be called to render the custom dashboard item. Note that this function name can be overridden by appending the function name in the `source` field of the `UIFeature` object.
+
+#### Example
+
+Refer to the [sample plugin](#sample-plugin) for an example of how to implement server side rendering for custom panels.
+
+### Panels
+
+Many of the pages in the InvenTree web interface are built using a series of "panels" which are displayed on the page. Custom panels can be added to these pages, by implementing the `get_ui_panels` method:
+
+::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_panels
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+#### Panel Options
+
+The *options* field in the returned `UIFeature` object can contain the following properties:
+
+::: plugin.base.ui.mixins.CustomPanelOptions
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+#### Source Function
+
+The frontend code expects a path to a javascript file containing a function named `renderPanel` which will be called to render the custom panel. Note that this function name can be overridden by appending the function name in the `source` field of the `UIFeature` object.
+
+#### Example
+
+Refer to the [sample plugin](#sample-plugin) for an example of how to implement server side rendering for custom panels.
+
+### Template Editors
+
+The `get_ui_template_editors` feature type can be used to provide custom template editors.
+
+::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_template_editors
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+### Template previews
+
+The `get_ui_template_previews` feature type can be used to provide custom template previews:
+
+::: plugin.base.ui.mixins.UserInterfaceMixin.get_ui_template_previews
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_sources: True
+ summary: False
+ members: []
+
+## Plugin Context
+
+When rendering certain content in the user interface, the rendering functions are passed a `context` object which contains information about the current page being rendered. The type of the `context` object is defined in the `PluginContext` file:
+
+{{ includefile("src/frontend/src/components/plugins/PluginContext.tsx", title="Plugin Context", fmt="javascript") }}
+
+This context data can be used to provide additional information to the rendering functions, and can be used to dynamically render content based on the current state of the system.
+
+### Additional Context
+
+Note that additional context can be passed to the rendering functions by adding additional key-value pairs to the `context` field in the `UIFeature` return type (provided by the backend via the API). This field is optional, and can be used at the discretion of the plugin developer.
+
+## Sample Plugin
+
+A sample plugin which implements custom user interface functionality is provided in the InvenTree source code, which provides a full working example of how to implement custom user interface functionality.
+
+::: plugin.samples.integration.user_interface_sample.SampleUserInterfacePlugin
+ options:
+ show_bases: False
+ show_root_heading: False
+ show_root_toc_entry: False
+ show_source: True
+ members: []
diff --git a/docs/docs/faq.md b/docs/docs/faq.md
index d8b51ecac6..98cd2cdb1b 100644
--- a/docs/docs/faq.md
+++ b/docs/docs/faq.md
@@ -14,37 +14,17 @@ InvenTree installation is not officially supported natively on Windows. However
### Command 'invoke' not found
-If the `invoke` command does not work, it means that the [invoke](https://pypi.org/project/invoke/) python library has not been correctly installed.
+If the `invoke` command does not work, it means that the invoke tool has not been correctly installed.
-Update the installed python packages with PIP:
+Refer to the [invoke installation guide](./start/invoke.md#installation) for more information.
-```
-pip3 install -U --require-hashes -r requirements.txt
-```
+### Can't find any collection named tasks
+
+Refer to the [invoke guide](./start/invoke.md#cant-find-any-collection-named-tasks) for more information.
### Invoke Version
-If the installed version of invoke is too old, users may see error messages during the installation procedure, such as:
-
-- *'update' did not receive all required positional arguments!*
-- *Function has keyword-only arguments or annotations*
-
-As per the [invoke guide](./start/intro.md#invoke), the minimum required version of Invoke is `{{ config.extra.min_invoke_version }}`.
-
-To determine the version of invoke you have installed, run either:
-
-```
-invoke --version
-```
-```
-python -m invoke --version
-```
-
-If you are running an older version of invoke, ensure it is updated to the latest version:
-
-```
-pip install -U invoke
-```
+If the installed version of invoke is too old, users may see error messages during the installation procedure. Refer to the [invoke guide](./start/invoke.md#minimum-version) for more information.
### No module named 'django'
diff --git a/docs/docs/hooks.py b/docs/docs/hooks.py
index bef816cabc..71ab4a963b 100644
--- a/docs/docs/hooks.py
+++ b/docs/docs/hooks.py
@@ -57,7 +57,7 @@ def fetch_rtd_versions():
versions = sorted(versions, key=lambda x: StrictVersion(x['version']), reverse=True)
# Add "latest" version first
- if not any((x['title'] == 'latest' for x in versions)):
+ if not any(x['title'] == 'latest' for x in versions):
versions.insert(
0,
{
@@ -70,7 +70,7 @@ def fetch_rtd_versions():
# Ensure we have the 'latest' version
current_version = os.environ.get('READTHEDOCS_VERSION', None)
- if current_version and not any((x['title'] == current_version for x in versions)):
+ if current_version and not any(x['title'] == current_version for x in versions):
versions.append({
'version': current_version,
'title': current_version,
@@ -82,7 +82,7 @@ def fetch_rtd_versions():
print('Discovered the following versions:')
print(versions)
- with open(output_filename, 'w') as file:
+ with open(output_filename, 'w', encoding='utf-8') as file:
json.dump(versions, file, indent=2)
@@ -100,7 +100,7 @@ def get_release_data():
# Release information has been cached to file
print("Loading release information from 'releases.json'")
- with open(json_file) as f:
+ with open(json_file, encoding='utf-8') as f:
return json.loads(f.read())
# Download release information via the GitHub API
@@ -127,7 +127,7 @@ def get_release_data():
page += 1
# Cache these results to file
- with open(json_file, 'w') as f:
+ with open(json_file, 'w', encoding='utf-8') as f:
print("Saving release information to 'releases.json'")
f.write(json.dumps(releases))
@@ -173,7 +173,7 @@ def on_config(config, *args, **kwargs):
# Add *all* readthedocs related keys
readthedocs = {}
- for key in os.environ.keys():
+ for key in os.environ:
if key.startswith('READTHEDOCS_'):
k = key.replace('READTHEDOCS_', '').lower()
readthedocs[k] = os.environ[key]
diff --git a/docs/docs/order/purchase_order.md b/docs/docs/order/purchase_order.md
index 7639ddcb03..349a145936 100644
--- a/docs/docs/order/purchase_order.md
+++ b/docs/docs/order/purchase_order.md
@@ -93,6 +93,14 @@ There are two options to mark items as "received":
!!! note "Permissions"
Marking line items as received requires the "Purchase order" ADD permission.
+### Item Location
+
+When receiving items from a purchase order, the location of the items must be specified. There are multiple ways to specify the location:
+
+* **Order Destination**: The *destination* field of the purchase order can be set to a specific location. When receiving items, the location will default to the destination location.
+
+* **Line Item Location**: Each line item can have a specific location set. When receiving items, the location will default to the line item location. *Note: A destination specified at the line item level will override the destination specified at the order level.*
+
### Received Items
Each item marked as "received" is automatically converted into a stock item.
diff --git a/docs/docs/report/helpers.md b/docs/docs/report/helpers.md
index 3e8f8aff6f..6dc90fb7a6 100644
--- a/docs/docs/report/helpers.md
+++ b/docs/docs/report/helpers.md
@@ -130,8 +130,8 @@ The following keyword arguments are available to the `render_currency` function:
| --- | --- |
| currency | Specify the currency code to render in (will attempt conversion if different to provided currency) |
| decimal_places | Specify the number of decimal places to render |
-| min_decimal_places | Specify the minimum number of decimal places to render (ignored if *decimal_places* is specified) |
-| max_decimal_places | Specify the maximum number of decimal places to render (ignored if *decimal_places* is specified) |
+| min_decimal_places | Specify the minimum number of decimal places to render |
+| max_decimal_places | Specify the maximum number of decimal places to render |
| include_symbol | Include currency symbol in rendered value (default = True) |
## Maths Operations
diff --git a/docs/docs/report/samples.md b/docs/docs/report/samples.md
index d6dff5678b..ed00e5ec43 100644
--- a/docs/docs/report/samples.md
+++ b/docs/docs/report/samples.md
@@ -19,6 +19,7 @@ The following report templates are provided "out of the box" and can be used as
| [Purchase Order](#purchase-order) | [PurchaseOrder](../order/purchase_order.md) | Purchase Order report |
| [Return Order](#return-order) | [ReturnOrder](../order/return_order.md) | Return Order report |
| [Sales Order](#sales-order) | [SalesOrder](../order/sales_order.md) | Sales Order report |
+| [Sales Order Shipment](#sales-order-shipment) | [SalesOrderShipment](../order/sales_order.md) | Sales Order Shipment report |
| [Stock Location](#stock-location) | [StockLocation](../stock/stock.md#stock-location) | Stock Location report |
| [Test Report](#test-report) | [StockItem](../stock/stock.md#stock-item) | Test Report |
@@ -42,6 +43,10 @@ The following report templates are provided "out of the box" and can be used as
{{ templatefile("report/inventree_sales_order_report.html") }}
+### Sales Order Shipment
+
+{{ templatefile("report/inventree_sales_order_shipment_report.html") }}
+
### Stock Location
{{ templatefile("report/inventree_stock_location_report.html") }}
diff --git a/docs/docs/settings/global.md b/docs/docs/settings/global.md
index 7de1186167..241ac74f0d 100644
--- a/docs/docs/settings/global.md
+++ b/docs/docs/settings/global.md
@@ -90,6 +90,8 @@ Configuration of barcode functionality:
{{ globalsetting("BARCODE_WEBCAM_SUPPORT") }}
{{ globalsetting("BARCODE_SHOW_TEXT") }}
{{ globalsetting("BARCODE_GENERATION_PLUGIN") }}
+{{ globalsetting("BARCODE_STORE_RESULTS") }}
+{{ globalsetting("BARCODE_RESULTS_MAX_NUM") }}
### Pricing and Currency
@@ -121,8 +123,6 @@ Configuration of report generation:
{{ globalsetting("REPORT_DEFAULT_PAGE_SIZE") }}
{{ globalsetting("REPORT_DEBUG_MODE") }}
{{ globalsetting("REPORT_LOG_ERRORS") }}
-{{ globalsetting("REPORT_ENABLE_TEST_REPORT") }}
-{{ globalsetting("REPORT_ATTACH_TEST_REPORT") }}
### Parts
@@ -188,6 +188,7 @@ Configuration of stock item options
{{ globalsetting("STOCK_ENFORCE_BOM_INSTALLATION") }}
{{ globalsetting("STOCK_ALLOW_OUT_OF_STOCK_TRANSFER") }}
{{ globalsetting("TEST_STATION_DATA") }}
+{{ globalsetting("TEST_UPLOAD_CREATE_TEMPLATE") }}
### Build Orders
@@ -207,7 +208,6 @@ Refer to the [return order settings](../order/return_order.md#return-order-setti
### Plugin Settings
-
| Name | Description | Default | Units |
| ---- | ----------- | ------- | ----- |
{{ globalsetting("PLUGIN_ON_STARTUP") }}
@@ -217,3 +217,4 @@ Refer to the [return order settings](../order/return_order.md#return-order-setti
{{ globalsetting("ENABLE_PLUGINS_APP") }}
{{ globalsetting("ENABLE_PLUGINS_SCHEDULE") }}
{{ globalsetting("ENABLE_PLUGINS_EVENTS") }}
+{{ globalsetting("ENABLE_PLUGINS_INTERFACE") }}
diff --git a/docs/docs/start/accounts.md b/docs/docs/start/accounts.md
new file mode 100644
index 0000000000..35c53f6453
--- /dev/null
+++ b/docs/docs/start/accounts.md
@@ -0,0 +1,49 @@
+---
+title: Account Management
+---
+
+## User Accounts
+
+By default, InvenTree does not ship with any user accounts. Configuring user accounts is the first step to login to the InvenTree server.
+
+### Administrator Account
+
+You can configure InvenTree to create an administrator account on the first run. This account will have full *superuser* access to the InvenTree server.
+
+This account is created when you first run the InvenTree server instance. The username / password for this account can be configured in the configuration file, or environment variables.
+
+!!! info "More Information"
+ For more information on configuring the administrator account, refer to the [configuration documentation](./config.md#administrator-account).
+
+### Create Superuser
+
+Another way to create an administrator account is to use the `superuser` command (via [invoke](./invoke.md)). This will create a new superuser account with the specified username and password.
+
+```bash
+invoke superuser
+```
+
+Or, if you are running InvenTree in a Docker container:
+
+```bash
+docker exec -rm -it inventree-server invoke superuser
+```
+
+### User Management
+
+Once you have created an administrator account, you can create and manage additional user accounts from the InvenTree web interface.
+
+## Password Management
+
+### Reset Password via Command Line
+
+If a password has been lost, and other backup options (such as email recovery) are unavailable, the system administrator can reset the password for a user account from the command line.
+
+Log into the machine running the InvenTree server, and run the following command (from the top-level source directory):
+
+```bash
+cd src/backend/InvenTree
+python ./manage.py changepassword
+```
+
+The system will prompt you to enter a new password for the specified user account.
diff --git a/docs/docs/start/bare_dev.md b/docs/docs/start/bare_dev.md
index fdfb02b4cc..41a96b4dd1 100644
--- a/docs/docs/start/bare_dev.md
+++ b/docs/docs/start/bare_dev.md
@@ -17,7 +17,7 @@ InvenTree includes a simple server application, suitable for use in a developmen
To run the development server on a local machine, run the command:
```
-(env) invoke server
+(env) invoke dev.server
```
This will launch the InvenTree web interface at `http://127.0.0.1:8000`.
@@ -25,7 +25,7 @@ This will launch the InvenTree web interface at `http://127.0.0.1:8000`.
A different port can be specified using the `-a` flag:
```
-(env) invoke server -a 127.0.0.1:8123
+(env) invoke dev.server -a 127.0.0.1:8123
```
Serving on the address `127.0.0.1` means that InvenTree will only be available *on that computer*. The server will be accessible from a web browser on the same computer, but not from any other computers on the local network.
@@ -35,12 +35,12 @@ Serving on the address `127.0.0.1` means that InvenTree will only be available *
To enable access to the InvenTree server from other computers on a local network, you need to know the IP of the computer running the server. For example, if the server IP address is `192.168.120.1`:
```
-(env) invoke server -a 192.168.120.1:8000
+(env) invoke dev.server -a 192.168.120.1:8000
```
## Background Worker
-The background task manager must also be started. The InvenTree server is already running in the foreground, so open a *new shell window* to start the server.
+The [background task manager](./processes.md#background-worker) must also be started. The InvenTree server is already running in the foreground, so open a *new shell window* to start the server.
### Activate Virtual Environment
@@ -55,4 +55,4 @@ source ./env/bin/activate
(env) invoke worker
```
-This will start the background process manager in the current shell.
+This will start an instance of the background worker in the current shell.
diff --git a/docs/docs/start/bare_prod.md b/docs/docs/start/bare_prod.md
index 761b324b91..4582eddec4 100644
--- a/docs/docs/start/bare_prod.md
+++ b/docs/docs/start/bare_prod.md
@@ -19,7 +19,7 @@ The InvenTree web server is hosted using [Gunicorn](https://gunicorn.org/). Guni
### Supervisor
-[Supervisor](http://supervisord.org/) is a process control system which monitors and controls multiple background processes. It is used in the InvenTree production setup to ensure that the server and background worker processes are always running.
+[Supervisor](http://supervisord.org/) is a process control system which monitors and controls multiple background processes. It is used in the InvenTree production setup to ensure that the [web server](./processes.md#web-server) and [background worker](./processes.md#background-worker) processes are always running.
## Gunicorn
@@ -98,11 +98,12 @@ The InvenTree server (and background task manager) should now be running!
In addition to the InvenTree server, you will need a method of delivering static and media files (this is *not* handled by the InvenTree server in a production environment).
!!! info "Read More"
- Refer to the [Serving Files](./serving_files.md) section for more details
+ Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
### Next Steps
-You (or your system administrator) may wish to perform further steps such as placing the InvenTree server behind a reverse-proxy such as [caddy](https://caddyserver.com/), or [nginx](https://www.nginx.com/).
+You (or your system administrator) may wish to perform further steps such as placing the InvenTree server behind a [reverse proxy](./processes.md#proxy-server) such as [caddy](https://caddyserver.com/), or [nginx](https://www.nginx.com/).
+
As production environment options are many and varied, such tasks are outside the scope of this documentation.
There are many great online tutorials about running django applications in production!
diff --git a/docs/docs/start/config.md b/docs/docs/start/config.md
index 5653b8a659..fab396c4d8 100644
--- a/docs/docs/start/config.md
+++ b/docs/docs/start/config.md
@@ -26,7 +26,7 @@ The InvenTree server tries to locate the `config.yaml` configuration file on sta
The configuration file *template* can be found on [GitHub]({{ sourcefile("src/backend/InvenTree/config_template.yaml") }}), and is shown below:
-{{ includefile("src/backend/InvenTree/config_template.yaml", "Configuration File Template", format="yaml") }}
+{{ includefile("src/backend/InvenTree/config_template.yaml", "Configuration File Template", fmt="yaml") }}
!!! info "Template File"
The default configuration file (as defined by the template linked above) will be copied to the specified configuration file location on first run, if a configuration file is not found in that location.
@@ -107,7 +107,22 @@ Depending on how your InvenTree installation is configured, you will need to pay
| INVENTREE_USE_X_FORWARDED_HOST | use_x_forwarded_host | Use forwarded host header | `False` |
| INVENTREE_USE_X_FORWARDED_PORT | use_x_forwarded_port | Use forwarded port header | `False` |
| INVENTREE_SESSION_COOKIE_SECURE | cookie.secure | Enforce secure session cookies | `False` |
-| INVENTREE_COOKIE_SAMESITE | cookie.samesite | Session cookie mode. Must be one of `Strict | Lax | None`. Refer to the [mozilla developer docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) for more information. | `None` |
+| INVENTREE_COOKIE_SAMESITE | cookie.samesite | Session cookie mode. Must be one of `Strict | Lax | None | False`. Refer to the [mozilla developer docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) and the [django documentation]({% include "django.html" %}/ref/settings/#std-setting-SESSION_COOKIE_SAMESITE) for more information. | False |
+
+### Debug Mode
+
+Note that in [debug mode](./intro.md#debug-mode), some of the above settings are automatically adjusted to allow for easier development:
+
+| Setting | Value in Debug Mode | Description |
+| --- | --- | --- |
+| `INVENTREE_ALLOWED_HOSTS` | `*` | Allow all host in debug mode |
+| `CSRF_TRUSTED_ORIGINS` | Value is appended to allow `http://*.localhost:*` | Allow all connections from localhost, for development purposes |
+| `INVENTREE_COOKIE_SAMESITE` | `False` | Disable all same-site cookie checks in debug mode |
+| `INVENTREE_SESSION_COOKIE_SECURE` | `False` | Disable secure session cookies in debug mode (allow non-https cookies) |
+
+### INVENTREE_COOKIE_SAMESITE vs INVENTREE_SESSION_COOKIE_SECURE
+
+Note that if you set the `INVENTREE_COOKIE_SAMESITE` to `None`, then `INVENTREE_SESSION_COOKIE_SECURE` is automatically set to `True` to ensure that the session cookie is secure! This means that the session cookie will only be sent over secure (https) connections.
### Proxy Settings
@@ -264,12 +279,12 @@ InvenTree requires some external directories for storing files:
| Environment Variable | Configuration File | Description | Default |
| --- | --- | --- | --- |
-| INVENTREE_STATIC_ROOT | static_root | [Static files](./serving_files.md#static-files) directory | *Not specified* |
-| INVENTREE_MEDIA_ROOT | media_root | [Media files](./serving_files.md#media-files) directory | *Not specified* |
+| INVENTREE_STATIC_ROOT | static_root | [Static files](./processes.md#static-files) directory | *Not specified* |
+| INVENTREE_MEDIA_ROOT | media_root | [Media files](./processes.md#media-files) directory | *Not specified* |
| INVENTREE_BACKUP_DIR | backup_dir | Backup files directory | *Not specified* |
!!! tip "Serving Files"
- Read the [Serving Files](./serving_files.md) section for more information on hosting *static* and *media* files
+ Read the [proxy server documentation](./processes.md#proxy-server) for more information on hosting *static* and *media* files
### Static File Storage
@@ -354,6 +369,15 @@ The logo and custom messages can be changed/set:
| INVENTREE_CUSTOMIZE | customize.navbar_message | Custom message for navbar | *Not specified* |
| INVENTREE_CUSTOMIZE | customize.hide_pui_banner | Disable PUI banner | False |
+The INVENTREE_CUSTOMIZE environment variable must contain a json object with the keys from the table above and
+the wanted values. Example:
+
+```
+INVENTREE_CUSTOMIZE={"login_message":"Hallo Michi","hide_pui_banner":"True"}
+```
+
+This example removes the PUI banner and sets a login message. Take care of the double quotes.
+
If you want to remove the InvenTree branding as far as possible from your end-user also check the [global server settings](../settings/global.md#server-settings).
!!! info "Custom Splash Screen Path"
diff --git a/docs/docs/start/docker.md b/docs/docs/start/docker.md
index 7ab8c88563..27863f8173 100644
--- a/docs/docs/start/docker.md
+++ b/docs/docs/start/docker.md
@@ -87,7 +87,7 @@ Plugins are supported natively when running under docker. There are two ways to
The production docker compose configuration outlined on this page uses [Caddy](https://caddyserver.com/) to serve static files and media files. If you change this configuration, you will need to ensure that static and media files are served correctly.
!!! info "Read More"
- Refer to the [Serving Files](./serving_files.md) section for more details
+ Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
### SSL Certificates
@@ -99,45 +99,11 @@ The example docker compose file launches the following containers:
| Container | Description |
| --- | --- |
-| inventree-db | PostgreSQL database |
-| inventree-server | Gunicorn web server |
-| inventree-worker | django-q background worker |
-| inventree-proxy | Caddy file server and reverse proxy |
-| *inventree-cache* | *redis cache (optional)* |
-
-#### PostgreSQL Database
-
-A PostgreSQL database container which requires a username:password combination (which can be changed). This uses the official [PostgreSQL image](https://hub.docker.com/_/postgres).
-
-#### Web Server
-
-Runs an InvenTree web server instance, powered by a Gunicorn web server.
-
-#### Background Worker
-
-Runs the InvenTree background worker process. This spins up a second instance of the *inventree* container, with a different entrypoint command.
-
-#### Proxy Server
-
-Caddy working as a reverse proxy, separating requests for static and media files, and directing everything else to Gunicorn.
-
-This container uses the official [caddy image](https://hub.docker.com/_/caddy).
-
-!!! info "Nginx Proxy"
- An alternative is to run nginx as the reverse proxy. A sample configuration file is provided in the `./contrib/container/` source directory.
-
-#### Redis Cache
-
-Redis is used as cache storage for the InvenTree server. This provides a more performant caching system which can useful in larger installations.
-
-This container uses the official [redis image](https://hub.docker.com/_/redis).
-
-!!! info "Redis on Docker"
- Docker adds an additional network layer - that might lead to lower performance than bare metal.
- To optimize and configure your redis deployment follow the [official docker guide](https://redis.io/docs/getting-started/install-stack/docker/#configuration).
-
-!!! tip "Enable Cache"
- While a redis container is provided in the default configuration, by default it is not enabled in the Inventree server. You can enable redis cache support by following the [caching configuration guide](./config.md#caching)
+| inventree-db | [PostgreSQL database](./processes.md#database) |
+| inventree-server | [InvenTree web server](./processes.md#web-server) |
+| inventree-worker | [django-q background worker](./processes.md#background-worker) |
+| inventree-proxy | [Caddy file server and reverse proxy](./processes.md#proxy-server) |
+| *inventree-cache* | [*redis cache (optional)*](./processes.md#cache-server) |
### Data Volume
diff --git a/docs/docs/start/docker_install.md b/docs/docs/start/docker_install.md
index e2c6d16b26..aa7f9b3f0d 100644
--- a/docs/docs/start/docker_install.md
+++ b/docs/docs/start/docker_install.md
@@ -37,8 +37,11 @@ The following files required for this setup are provided with the InvenTree sour
Download these files to a directory on your local machine.
+!!! warning "File Extensions"
+ If your computer adds *.txt* extensions to any of the downloaded files, rename the file and remove the added extension before continuing!
+
!!! success "Working Directory"
- This tutorial assumes you are working from a direction where all of these files are located.
+ This tutorial assumes you are working from a directory where all of these files are located.
!!! tip "No Source Required"
For a production setup you do not need the InvenTree source code. Simply download the three required files from the links above!
@@ -101,10 +104,11 @@ docker compose up -d
This command launches the following containers:
-- `inventree-db` - PostgreSQL database
-- `inventree-server` - InvenTree web server
-- `inventree-worker` - Background worker
-- `inventree-proxy` - Caddy reverse proxy
+- `inventree-db` - [PostgreSQL database](./processes.md#database)
+- `inventree-server` - [InvenTree web server](./processes.md#web-server)
+- `inventree-worker` - [Background worker](./processes.md#background-worker)
+- `inventree-proxy` - [Caddy reverse proxy](./processes.md#proxy-server)
+- `inventree-cache` - [Redis cache](./processes.md#cache-server)
!!! success "Up and Running!"
You should now be able to view the InvenTree login screen at [http://inventree.localhost](http://inventree.localhost) (or whatever custom domain you have configured in the `.env` file).
@@ -202,7 +206,7 @@ Any persistent files generated by the Caddy container (such as certificates, etc
To quickly get started with a [demo dataset](../demo.md), you can run the following command:
```
-docker compose run --rm inventree-server invoke setup-test -i
+docker compose run --rm inventree-server invoke dev.setup-test -i
```
This will install the InvenTree demo dataset into your instance.
@@ -210,7 +214,7 @@ This will install the InvenTree demo dataset into your instance.
To start afresh (and completely remove the existing database), run the following command:
```
-docker compose run --rm inventree-server invoke delete-data
+docker compose run --rm inventree-server invoke dev.delete-data
```
## Install custom packages
diff --git a/docs/docs/start/install.md b/docs/docs/start/install.md
index 6591d68852..23cb5aae00 100644
--- a/docs/docs/start/install.md
+++ b/docs/docs/start/install.md
@@ -66,14 +66,14 @@ In addition to the location where the InvenTree source code is located, you will
InvenTree requires a directory for storage of [static files](./config.md#static-file-storage).
!!! info "Read More"
- Refer to the [Serving Files](./serving_files.md) section for more details
+ Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
#### Media Files
InvenTree requires a directory for storage of [user uploaded files](./config.md#uploaded-file-storage)
!!! info "Read More"
- Refer to the [Serving Files](./serving_files.md) section for more details
+ Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
#### Backup Directory
diff --git a/docs/docs/start/installer.md b/docs/docs/start/installer.md
index 295766e331..6676124478 100644
--- a/docs/docs/start/installer.md
+++ b/docs/docs/start/installer.md
@@ -132,11 +132,14 @@ To update InvenTree run `apt install --only-upgrade inventree` - this might need
## Controlling InvenTree
### Services
+
InvenTree installs multiple services that can be controlled with your local system runner (`service` or `systemctl`).
-The service `inventree` controls everything, `inventree-web` the (internal) webserver and `inventree-worker` the background worker(s).
+The service `inventree` controls everything, `inventree-web` (the [InvenTree web server](./processes.md#web-server)) and `inventree-worker` the [background worker(s)](./processes.md#background-worker).
More instances of the worker can be instantiated from the command line. This is only meant for advanced users.
+
This sample script launches 3 services. By default, 1 is launched.
+
```bash
inventree scale worker=3
```
diff --git a/docs/docs/start/intro.md b/docs/docs/start/intro.md
index 9b3253aab8..228641b55b 100644
--- a/docs/docs/start/intro.md
+++ b/docs/docs/start/intro.md
@@ -29,30 +29,7 @@ Independent of the preferred installation method, InvenTree provides a number of
## System Components
-The InvenTree server ecosystem consists of the following components:
-
-### Database
-
-A persistent database is required for data storage. By default, InvenTree is configured to use [PostgreSQL](https://www.postgresql.org/) - and this is the recommended database backend to use. However, InvenTree can also be configured to connect to any database backend [supported by Django]({% include "django.html" %}/ref/databases/)
-
-
-### Web Server
-
-The bulk of the InvenTree code base supports the custom web server application. The web server application services user requests and facilitates database access. The webserver provides access to the [API](../api/api.md) for performing database query actions.
-
-InvenTree uses [Gunicorn](https://gunicorn.org/) as the web server - a Python WSGI HTTP server.
-
-### Background Tasks
-
-A separate application handles management of [background tasks](../settings/tasks.md), separate to user-facing web requests. The background task manager is required to perform asynchronous tasks, such as sending emails, generating reports, and other long-running tasks.
-
-InvenTree uses [django-q2](https://django-q2.readthedocs.io/en/master/) as the background task manager.
-
-### File Storage
-
-Uploaded *media* files (images, attachments, reports, etc) and *static* files (javascript, html) are stored to a persistent storage volume. A *file server* is required to serve these files to the user.
-
-InvenTree uses [Caddy](https://caddyserver.com/) as a file server, which is configured to serve both *static* and *media* files. Additionally, Caddy provides SSL termination and reverse proxy services.
+The InvenTree software stack is composed of multiple components, each of which is required for a fully functional server environment. Your can read more about the [InvenTree processes here](./processes.md).
## OS Requirements
@@ -70,25 +47,7 @@ InvenTree requires a minimum Python version of {{ config.extra.min_python_versio
### Invoke
-InvenTree makes use of the [invoke](https://www.pyinvoke.org/) python toolkit for performing various administrative actions.
-
-!!! warning "Invoke Version"
- InvenTree requires invoke version {{ config.extra.min_invoke_version }} or newer. Some platforms may be shipped with older versions of invoke!
-
-!!! tip "Updating Invoke"
- To update your invoke version, run `pip install -U invoke`
-
-To display a list of the available InvenTree administration actions, run the following commands from the top level source directory:
-
-```
-invoke --list
-```
-
-This provides a list of the available invoke commands - also displayed below:
-
-```
-{{ invoke_commands() }}
-```
+InvenTree makes use of the [invoke](https://www.pyinvoke.org/) python toolkit for performing various administrative actions. You can read [more about out use of the invoke tool here](./invoke.md)
### Virtual Environment
@@ -150,4 +109,4 @@ So, for a production setup, you should set `INVENTREE_DEBUG=false` in the [confi
Turning off DEBUG mode creates further work for the system administrator. In particular, when running in DEBUG mode, the InvenTree web server natively manages *static* and *media* files, which means that the InvenTree server can run "monolithically" without the need for a separate web server.
!!! info "Read More"
- Refer to the [Serving Files](./serving_files.md) section for more details
+ Refer to the [proxy server documentation](./processes.md#proxy-server) for more details
diff --git a/docs/docs/start/invoke.md b/docs/docs/start/invoke.md
new file mode 100644
index 0000000000..0ec4221724
--- /dev/null
+++ b/docs/docs/start/invoke.md
@@ -0,0 +1,129 @@
+---
+title: Invoke Tool
+---
+
+## Invoke Tool
+
+InvenTree uses the [invoke](https://www.pyinvoke.org/) tool to manage various system administration tasks. Invoke is a powerful python-based task execution tool, which allows for the creation of custom tasks and command-line utilities.
+
+### Installation
+
+InvenTree setup and administration requires that the invoke tool is installed. This is usually installed automatically as part of the InvenTree installation process - however (if you are configuring InvenTree from source) you may need to install it manually.
+
+To install the invoke tool, run the following command:
+
+```
+pip install -U invoke
+```
+
+### Minimum Version
+
+The minimum required version of the invoke tool is `{{ config.extra.min_invoke_version }}`.
+
+To determine the version of invoke you have installed, run either:
+
+```
+invoke --version
+```
+```
+python -m invoke --version
+```
+
+If you are running an older version of invoke, ensure it is updated to the latest version:
+
+```
+pip install -U invoke
+```
+
+### Running from Command Line
+
+To run the `invoke` tool from the command line, you must be in the top-level InvenTree source directory. This is the directory that contains the [tasks.py]({{ sourcefile("tasks.py") }}) file.
+
+### Running in Docker Mode
+
+If you have installed InvenTree via [docker](./docker_install.md), then you need to ensure that the `invoke` commands are called from within the docker container context.
+
+For example, to run the `update` task, you might use the following command to run the `invoke` command - using the `docker compose` tool.
+
+```
+docker compose run --rm inventree-server invoke update
+```
+
+!!! note "Docker Compose Directory"
+ The `docker compose` command should be run from the directory where the `docker-compose.yml` file is located.
+
+Alternatively, to manually run the command within the environment of the running docker container:
+
+```
+docker exec -it inventree-server invoke update
+```
+
+!!! note "Container Name"
+ The container name may be different depending on how you have configured the docker environment.
+
+### Running in Installer Mode
+
+If you have installed InvenTree using the [package installer](./installer.md), then you need to prefix all `invoke` commands with `inventree run`.
+
+For example, to run the `update` task, use:
+
+```
+inventree run invoke update
+```
+
+## Available Tasks
+
+To display a list of the available InvenTree administration actions, run the following commands from the top level source directory:
+
+```
+invoke --list
+```
+
+This provides a list of the available invoke commands - also displayed below:
+
+```
+{{ invoke_commands() }}
+```
+
+### Task Information
+
+Each task has a brief description of its purpose, which is displayed when running the `invoke --list` command. To find more detailed information about a specific task, run the command with the `--help` flag.
+
+For example, to find more information about the `update` task, run:
+
+```
+invoke update --help
+```
+
+### Internal Tasks
+
+Tasks with the `int.` prefix are internal tasks, and are not intended for general use. These are called by other tasks, and should generally not be called directly.
+
+### Developer Tasks
+
+Tasks with the `dev.` prefix are tasks intended for InvenTree developers, and are also not intended for general use.
+
+## Common Issues
+
+Below are some common issues that users may encounter when using the `invoke` tool, and how to resolve them.
+
+### Command 'invoke' not found
+
+If the `invoke` command does not work, it means that the invoke tool has not been [installed correctly](#installation).
+
+### Invoke Version
+
+If the installed version of invoke is too old, users may see error messages during the installation procedure, such as:
+
+- *'update' did not receive all required positional arguments!*
+- *Function has keyword-only arguments or annotations*
+
+Ensure that the installed version of invoke is [up to date](#minimum-version).
+
+### Can't find any collection named 'tasks'
+
+It means that the `invoke` tool is not able to locate the InvenTree task collection.
+
+- If running in docker, ensure that you are running the `invoke` command from within the [docker container](#running-in-docker-mode)
+- If running in installer mode, ensure that you are running the `invoke` command with the [correct prefix](#running-in-installer-mode)
+- If running via command line, ensure that you are running the `invoke` command from the [correct directory](#running-from-command-line)
diff --git a/docs/docs/start/processes.md b/docs/docs/start/processes.md
new file mode 100644
index 0000000000..de74df2937
--- /dev/null
+++ b/docs/docs/start/processes.md
@@ -0,0 +1,103 @@
+---
+title: InvenTree Processes
+---
+
+## InvenTree Processes
+
+InvenTree is a complex application, and there are a number of processes which must be running in order for the system to operate correctly. Typically, these processes are started automatically when the InvenTree application stack is launched. However, in some cases, it may be necessary to start these processes manually.
+
+System administrators should be aware of the following processes when configuring an InvenTree installation:
+
+### Database
+
+At the core of the InvenTree application is the SQL database. The database is responsible for storing all of the persistent data which is used by the InvenTree application.
+
+InvenTree supports a [number of database backends]({% include "django.html" %}/ref/databases) - which typically require their own process to be running.
+
+Refer to the [database configuration guide](./config.md#database-options) for more information on selecting and configuring the database backend.
+
+In running InvenTree via [docker compose](./docker_install.md), the database process is managed by the `inventree-db` service which provides a [Postgres docker container](https://hub.docker.com/_/postgres).
+
+### Web Server
+
+The InvenTree web server is responsible for serving the InvenTree web interface to users. The web server is a [Django](https://www.djangoproject.com/) application, which is run using the [Gunicorn](https://gunicorn.org/) WSGI server.
+
+The web server interfaces with the backend database and provides a [REST API](../api/api.md) (via the [Django REST framework](https://www.django-rest-framework.org/)) which is used by the frontend web interface.
+
+In running InvenTree via [docker compose](./docker_install.md), the web server process is managed by the `inventree-server` service, which runs from a custom docker image.
+
+### Proxy Server
+
+In a production installation, the InvenTree web server application *does not* provide hosting of static files, or user-uploaded (media) files. Instead, these files should be served by a separate web server, such as [Caddy](https://caddyserver.com/), [Nginx](https://www.nginx.com/), or [Apache](https://httpd.apache.org/).
+
+!!! info "Debug Mode"
+ When running in [production mode](./bare_prod.md) (i.e. the `INVENTREE_DEBUG` flag is disabled), a separate web server is required for serving *static* and *media* files. In `DEBUG` mode, the django webserver facilitates delivery of *static* and *media* files, but this is explicitly not suitable for a production environment.
+
+!!! tip "Read More"
+ You can find further information in the [django documentation]({% include "django.html" %}/howto/static-files/deployment/).
+
+A proxy server is required to store and serve static files (such as images, documents, etc) which are used by the InvenTree application. As django is not designed to serve static files in a production environment, a separate file server is required. For our docker compose setup, we use the `inventree-proxy` service, which runs a [Caddy](https://caddyserver.com/) proxy server to serve static files.
+
+In addition to serving static files, the proxy server also provides a reverse proxy to the InvenTree web server, allowing the InvenTree web interface to be accessed via a standard HTTP/HTTPS port.
+
+Further, it provides an authentication endpoint for accessing files in the `/static/` and `/media/` directories.
+
+Finally, it provides a [Let's Encrypt](https://letsencrypt.org/) endpoint for automatic SSL certificate generation and renewal.
+
+#### Static Files
+
+Static files can be served without any need for authentication. In fact, they must be accessible *without* authentication, otherwise the unauthenticated views (such as the login screen) will not function correctly.
+
+#### Media Files
+
+It is highly recommended that the *media* files are served behind an authentication layer. This is because the media files are user-uploaded, and may contain sensitive information. Most modern web servers provide a way to serve files behind an authentication layer.
+
+#### Example Configuration
+
+The [docker production example](./docker.md) provides an example using [Caddy](https://caddyserver.com) to serve *static* and *media* files, and redirecting other requests to the InvenTree web server itself.
+
+Caddy is a modern web server which is easy to configure and provides a number of useful features, including automatic SSL certificate generation.
+
+#### Alternatives to Caddy
+
+An alternative is to run nginx as the reverse proxy. A sample configuration file is provided in the `./contrib/container/` source directory.
+
+#### Integrating with Existing Proxy
+
+You may wish to integrate the InvenTree web server with an existing reverse proxy server. This is possible, but requires careful configuration to ensure that the static and media files are served correctly.
+
+*Note: A custom configuration of the proxy server is outside the scope of this documentation!*
+
+### Background Worker
+
+The InvenTree background worker is responsible for handling [asynchronous tasks](../settings/tasks.md) which are not suitable for the main web server process. This includes tasks such as sending emails, generating reports, and other long-running tasks.
+
+InvenTree uses the [django-q2](https://django-q2.readthedocs.io/en/master/) package to manage background tasks.
+
+The background worker process is managed by the `inventree-worker` service in the [docker compose](./docker_install.md) setup. Note that this services runs a duplicate copy of the `inventree-server` container, but with a different entrypoint command which starts the background worker process.
+
+#### Important Information
+
+If the background worker process is not running, InvenTree will not be able to perform background tasks. This can lead to issues such as emails not being sent, or reports not being generated. Additionally, certain data may not be updated correctly if the background worker is not running.
+
+!!! warning "Background Worker"
+ The background worker process is a critical part of the InvenTree application stack. It is important that this process is running correctly in order for the InvenTree application to operate correctly.
+
+#### Limitations
+
+If the [cache server](#cache-server) is not running, the background worker will be limited to running a single threaded worker. This is because the background worker uses the cache server to manage task locking, and without a global cache server to communicate between processes, concurrency issues can occur.
+
+### Cache Server
+
+The InvenTree cache server is used to store temporary data which is shared between the InvenTree web server and the background worker processes. The cache server is also used to store task information, and to manage task locking between the background worker processes.
+
+Using a cache server can significantly improve the performance of the InvenTree application, as it reduces the need to query the database for frequently accessed data.
+
+InvenTree uses the [Redis](https://redis.io/) cache server to manage cache data. When running in docker, we use the official [redis image](https://hub.docker.com/_/redis).
+
+!!! info "Redis on Docker"
+ Docker adds an additional network layer - that might lead to lower performance than bare metal.
+ To optimize and configure your redis deployment follow the [official docker guide](https://redis.io/docs/getting-started/install-stack/docker/#configuration).
+
+!!! tip "Enable Cache"
+ While a redis container is provided in the default configuration, by default it is not enabled in the Inventree server. You can enable redis cache support by following the [caching configuration guide](./config.md#caching)
diff --git a/docs/docs/start/serving_files.md b/docs/docs/start/serving_files.md
deleted file mode 100644
index a641abda09..0000000000
--- a/docs/docs/start/serving_files.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Serving Static and Media Files
----
-
-## Serving Files
-
-In a production installation, the InvenTree web server application *does not* provide hosting of static files, or user-uploaded (media) files. Instead, these files should be served by a separate web server, such as [Caddy](https://caddyserver.com/), [Nginx](https://www.nginx.com/), or [Apache](https://httpd.apache.org/).
-
-!!! info "Debug Mode"
- When running in [production mode](./bare_prod.md) (i.e. the `INVENTREE_DEBUG` flag is disabled), a separate web server is required for serving *static* and *media* files. In `DEBUG` mode, the django webserver facilitates delivery of *static* and *media* files, but this is explicitly not suitable for a production environment.
-
-!!! tip "Read More"
- You can find further information in the [django documentation]({% include "django.html" %}/howto/static-files/deployment/).
-
-There are *many* different ways that a sysadmin might wish to handle this - and it depends on your particular installation requirements.
-
-### Static Files
-
-Static files can be served without any need for authentication. In fact, they must be accessible *without* authentication, otherwise the unauthenticated views (such as the login screen) will not function correctly.
-
-### Media Files
-
-It is highly recommended that the *media* files are served behind an authentication layer. This is because the media files are user-uploaded, and may contain sensitive information. Most modern web servers provide a way to serve files behind an authentication layer.
-
-### Example Configuration
-
-The [docker production example](./docker.md) provides an example using [Caddy](https://caddyserver.com) to serve *static* and *media* files, and redirecting other requests to the InvenTree web server itself.
-
-Caddy is a modern web server which is easy to configure and provides a number of useful features, including automatic SSL certificate generation.
diff --git a/docs/extract_schema.py b/docs/extract_schema.py
index 1ff883efb9..1a781d76c5 100644
--- a/docs/extract_schema.py
+++ b/docs/extract_schema.py
@@ -46,7 +46,7 @@ def top_level_path(path: str) -> str:
key = path.split('/')[1]
- if key in SPECIAL_PATHS.keys():
+ if key in SPECIAL_PATHS:
return key
return GENERAL_PATH
@@ -54,9 +54,7 @@ def top_level_path(path: str) -> str:
def generate_schema_file(key: str) -> None:
"""Generate a schema file for the provided key."""
- description = (
- SPECIAL_PATHS[key] if key in SPECIAL_PATHS else 'General API Endpoints'
- )
+ description = SPECIAL_PATHS.get(key, 'General API Endpoints')
output = f"""
---
@@ -75,7 +73,7 @@ def generate_schema_file(key: str) -> None:
print('Writing schema file to:', output_file)
- with open(output_file, 'w') as f:
+ with open(output_file, 'w', encoding='utf-8') as f:
f.write(output)
@@ -121,7 +119,7 @@ def generate_index_file(version: str):
print('Writing index file to:', output_file)
- with open(output_file, 'w') as f:
+ with open(output_file, 'w', encoding='utf-8') as f:
f.write(output)
@@ -173,7 +171,7 @@ def parse_api_file(filename: str):
The intent is to make the API schema easier to peruse on the documentation.
"""
- with open(filename, 'r') as f:
+ with open(filename, encoding='utf-8') as f:
data = yaml.safe_load(f)
paths = data['paths']
@@ -213,7 +211,7 @@ def parse_api_file(filename: str):
output_file = os.path.abspath(output_file)
- with open(output_file, 'w') as f:
+ with open(output_file, 'w', encoding='utf-8') as f:
yaml.dump(output, f)
# Generate a markdown file for the schema
diff --git a/docs/main.py b/docs/main.py
index b09b8b0da2..84b91f7ad8 100644
--- a/docs/main.py
+++ b/docs/main.py
@@ -16,7 +16,7 @@ global USER_SETTINGS
here = os.path.dirname(__file__)
settings_file = os.path.join(here, 'inventree_settings.json')
-with open(settings_file, 'r') as sf:
+with open(settings_file, encoding='utf-8') as sf:
settings = json.load(sf)
GLOBAL_SETTINGS = settings['global']
@@ -27,7 +27,7 @@ def get_repo_url(raw=False):
"""Return the repository URL for the current project."""
mkdocs_yml = os.path.join(os.path.dirname(__file__), 'mkdocs.yml')
- with open(mkdocs_yml, 'r') as f:
+ with open(mkdocs_yml, encoding='utf-8') as f:
mkdocs_config = yaml.safe_load(f)
repo_name = mkdocs_config['repo_name']
@@ -47,7 +47,7 @@ def check_link(url) -> bool:
# Keep a local cache file of URLs we have already checked
if os.path.exists(CACHE_FILE):
- with open(CACHE_FILE, 'r') as f:
+ with open(CACHE_FILE, encoding='utf-8') as f:
cache = f.read().splitlines()
if url in cache:
@@ -59,7 +59,7 @@ def check_link(url) -> bool:
response = requests.head(url, timeout=5000)
if response.status_code == 200:
# Update the cache file
- with open(CACHE_FILE, 'a') as f:
+ with open(CACHE_FILE, 'a', encoding='utf-8') as f:
f.write(f'{url}\n')
return True
@@ -177,7 +177,7 @@ def define_env(env):
assert subprocess.call(command, shell=True) == 0
- with open(output, 'r') as f:
+ with open(output, encoding='utf-8') as f:
content = f.read()
return content
@@ -200,12 +200,13 @@ def define_env(env):
return assets
@env.macro
- def includefile(filename: str, title: str, format: str = ''):
+ def includefile(filename: str, title: str, fmt: str = ''):
"""Include a file in the documentation, in a 'collapse' block.
Arguments:
- filename: The name of the file to include (relative to the top-level directory)
- title:
+ - fmt:
"""
here = os.path.dirname(__file__)
path = os.path.join(here, '..', filename)
@@ -214,11 +215,11 @@ def define_env(env):
if not os.path.exists(path):
raise FileNotFoundError(f'Required file {path} does not exist.')
- with open(path, 'r') as f:
+ with open(path, encoding='utf-8') as f:
content = f.read()
data = f'??? abstract "{title}"\n\n'
- data += f' ```{format}\n'
+ data += f' ```{fmt}\n'
data += textwrap.indent(content, ' ')
data += '\n\n'
data += ' ```\n\n'
@@ -233,15 +234,15 @@ def define_env(env):
'src', 'backend', 'InvenTree', 'report', 'templates', filename
)
- return includefile(fn, f'Template: {base}', format='html')
+ return includefile(fn, f'Template: {base}', fmt='html')
@env.macro
def rendersetting(setting: dict):
"""Render a provided setting object into a table row."""
name = setting['name']
description = setting['description']
- default = setting.get('default', None)
- units = setting.get('units', None)
+ default = setting.get('default')
+ units = setting.get('units')
return f'| {name} | {description} | {default if default is not None else ""} | {units if units is not None else ""} |'
diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml
index 059a7fb10b..f341733627 100644
--- a/docs/mkdocs.yml
+++ b/docs/mkdocs.yml
@@ -88,6 +88,7 @@ nav:
- Security: security.md
- Install:
- Introduction: start/intro.md
+ - Processes: start/processes.md
- Configuration: start/config.md
- Docker:
- Introduction: start/docker.md
@@ -97,8 +98,9 @@ nav:
- Installer: start/installer.md
- Production: start/bare_prod.md
- Development: start/bare_dev.md
- - Serving Files: start/serving_files.md
+ - User Accounts: start/accounts.md
- Data Backup: start/backup.md
+ - Invoke: start/invoke.md
- Migrating Data: start/migrate.md
- Advanced Topics: start/advanced.md
- Parts:
@@ -213,6 +215,7 @@ nav:
- Schedule Mixin: extend/plugins/schedule.md
- Settings Mixin: extend/plugins/settings.md
- URL Mixin: extend/plugins/urls.md
+ - User Interface Mixin: extend/plugins/ui.md
- Validation Mixin: extend/plugins/validation.md
- Machines:
- Overview: extend/machines/overview.md
diff --git a/docs/mlc_config.json b/docs/mlc_config.json
index 4146cd4cb2..f9f3bb78d2 100644
--- a/docs/mlc_config.json
+++ b/docs/mlc_config.json
@@ -6,6 +6,9 @@
{
"pattern": "http://localhost"
},
+ {
+ "pattern": "https://localhost:5173/"
+ },
{
"pattern": "http://127.0.0.1"
},
@@ -14,6 +17,9 @@
},
{
"pattern": "https://www.reddit.com/r/InvenTree/"
+ },
+ {
+ "pattern": "https://opensource.org/license/MIT"
}
]
}
diff --git a/docs/requirements.in b/docs/requirements.in
index a2442f3814..eb765da8d6 100644
--- a/docs/requirements.in
+++ b/docs/requirements.in
@@ -1,4 +1,4 @@
-mkdocs==1.6.0
+mkdocs==1.6.1
mkdocs-macros-plugin>=0.7,<2.0
mkdocs-material>=9.0,<10.0
mkdocs-git-revision-date-localized-plugin>=1.1,<2.0
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 5968de15d8..e08a63c3a2 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -158,6 +158,12 @@ h11==0.14.0 \
--hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \
--hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761
# via httpcore
+hjson==3.1.0 \
+ --hash=sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75 \
+ --hash=sha256:65713cdcf13214fb554eb8b4ef803419733f4f5e551047c9b711098ab7186b89
+ # via
+ # mkdocs-macros-plugin
+ # super-collections
httpcore==1.0.5 \
--hash=sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61 \
--hash=sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5
@@ -173,9 +179,9 @@ idna==3.7 \
# anyio
# httpx
# requests
-importlib-metadata==8.2.0 \
- --hash=sha256:11901fa0c2f97919b288679932bb64febaeacf289d18ac84dd68cb2e74213369 \
- --hash=sha256:72e8d4399996132204f9a16dcc751af254a48f8d1b20b9ff0f98d4a8f901e73d
+importlib-metadata==8.5.0 \
+ --hash=sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b \
+ --hash=sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7
# via
# markdown
# mkdocs
@@ -280,9 +286,9 @@ mergedeep==1.3.4 \
# via
# mkdocs
# mkdocs-get-deps
-mkdocs==1.6.0 \
- --hash=sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7 \
- --hash=sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512
+mkdocs==1.6.1 \
+ --hash=sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2 \
+ --hash=sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e
# via
# -r docs/requirements.in
# mkdocs-autorefs
@@ -293,29 +299,29 @@ mkdocs==1.6.0 \
# mkdocs-simple-hooks
# mkdocstrings
# neoteroi-mkdocs
-mkdocs-autorefs==1.0.1 \
- --hash=sha256:aacdfae1ab197780fb7a2dac92ad8a3d8f7ca8049a9cbe56a4218cd52e8da570 \
- --hash=sha256:f684edf847eced40b570b57846b15f0bf57fb93ac2c510450775dcf16accb971
+mkdocs-autorefs==1.2.0 \
+ --hash=sha256:a86b93abff653521bda71cf3fc5596342b7a23982093915cb74273f67522190f \
+ --hash=sha256:d588754ae89bd0ced0c70c06f58566a4ee43471eeeee5202427da7de9ef85a2f
# via mkdocstrings
mkdocs-get-deps==0.2.0 \
--hash=sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c \
--hash=sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134
# via mkdocs
-mkdocs-git-revision-date-localized-plugin==1.2.7 \
- --hash=sha256:2f83b52b4dad642751a79465f80394672cbad022129286f40d36b03aebee490f \
- --hash=sha256:d2b30ccb74ec8e118298758d75ae4b4f02c620daf776a6c92fcbb58f2b78f19f
+mkdocs-git-revision-date-localized-plugin==1.3.0 \
+ --hash=sha256:439e2f14582204050a664c258861c325064d97cdc848c541e48bb034a6c4d0cb \
+ --hash=sha256:c99377ee119372d57a9e47cff4e68f04cce634a74831c06bc89b33e456e840a1
# via -r docs/requirements.in
-mkdocs-include-markdown-plugin==6.2.2 \
- --hash=sha256:d293950f6499d2944291ca7b9bc4a60e652bbfd3e3a42b564f6cceee268694e7 \
- --hash=sha256:f2bd5026650492a581d2fd44be6c22f90391910d76582b96a34c264f2d17875d
+mkdocs-include-markdown-plugin==7.0.0 \
+ --hash=sha256:a8eac8f2e6aa391d82d1d5e473b819b52393d91464060c02db5741834fe9008b \
+ --hash=sha256:bf8d19245ae3fb2eea395888e80c60bc91806a0d879279707d707896c24319c3
# via -r docs/requirements.in
-mkdocs-macros-plugin==1.0.5 \
- --hash=sha256:f60e26f711f5a830ddf1e7980865bf5c0f1180db56109803cdd280073c1a050a \
- --hash=sha256:fe348d75f01c911f362b6d998c57b3d85b505876dde69db924f2c512c395c328
+mkdocs-macros-plugin==1.3.7 \
+ --hash=sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59 \
+ --hash=sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523
# via -r docs/requirements.in
-mkdocs-material==9.5.32 \
- --hash=sha256:38ed66e6d6768dde4edde022554553e48b2db0d26d1320b19e2e2b9da0be1120 \
- --hash=sha256:f3704f46b63d31b3cd35c0055a72280bed825786eccaf19c655b44e0cd2c6b3f
+mkdocs-material==9.5.43 \
+ --hash=sha256:4aae0664c456fd12837a3192e0225c17960ba8bf55d7f0a7daef7e4b0b914a34 \
+ --hash=sha256:83be7ff30b65a1e4930dfa4ab911e75780a3afc9583d162692e434581cb46979
# via -r docs/requirements.in
mkdocs-material-extensions==1.3.1 \
--hash=sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443 \
@@ -325,9 +331,9 @@ mkdocs-simple-hooks==0.1.5 \
--hash=sha256:dddbdf151a18723c9302a133e5cf79538be8eb9d274e8e07d2ac3ac34890837c \
--hash=sha256:efeabdbb98b0850a909adee285f3404535117159d5cb3a34f541d6eaa644d50a
# via -r docs/requirements.in
-mkdocstrings[python]==0.25.2 \
- --hash=sha256:5cf57ad7f61e8be3111a2458b4e49c2029c9cb35525393b179f9c916ca8042dc \
- --hash=sha256:9e2cda5e2e12db8bb98d21e3410f3f27f8faab685a24b03b06ba7daa5b92abfc
+mkdocstrings[python]==0.26.2 \
+ --hash=sha256:1248f3228464f3b8d1a15bd91249ce1701fe3104ac517a5f167a0e01ca850ba5 \
+ --hash=sha256:34a8b50f1e6cfd29546c6c09fbe02154adfb0b361bb758834bf56aa284ba876e
# via
# -r docs/requirements.in
# mkdocstrings-python
@@ -342,14 +348,18 @@ neoteroi-mkdocs==1.1.0 \
packaging==24.0 \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
- # via mkdocs
+ # via
+ # mkdocs
+ # mkdocs-macros-plugin
paginate==0.5.6 \
--hash=sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d
# via mkdocs-material
pathspec==0.12.1 \
--hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \
--hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712
- # via mkdocs
+ # via
+ # mkdocs
+ # mkdocs-macros-plugin
platformdirs==4.2.2 \
--hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
--hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
@@ -443,86 +453,101 @@ pyyaml-env-tag==0.1 \
--hash=sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb \
--hash=sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069
# via mkdocs
-regex==2024.7.24 \
- --hash=sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c \
- --hash=sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535 \
- --hash=sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24 \
- --hash=sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce \
- --hash=sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc \
- --hash=sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5 \
- --hash=sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce \
- --hash=sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53 \
- --hash=sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d \
- --hash=sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c \
- --hash=sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908 \
- --hash=sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8 \
- --hash=sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024 \
- --hash=sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281 \
- --hash=sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a \
- --hash=sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169 \
- --hash=sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364 \
- --hash=sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa \
- --hash=sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be \
- --hash=sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53 \
- --hash=sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759 \
- --hash=sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e \
- --hash=sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b \
- --hash=sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52 \
- --hash=sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610 \
- --hash=sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05 \
- --hash=sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2 \
- --hash=sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca \
- --hash=sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0 \
- --hash=sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293 \
- --hash=sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289 \
- --hash=sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e \
- --hash=sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f \
- --hash=sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c \
- --hash=sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94 \
- --hash=sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad \
- --hash=sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46 \
- --hash=sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9 \
- --hash=sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9 \
- --hash=sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee \
- --hash=sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9 \
- --hash=sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1 \
- --hash=sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9 \
- --hash=sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799 \
- --hash=sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1 \
- --hash=sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b \
- --hash=sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf \
- --hash=sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5 \
- --hash=sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2 \
- --hash=sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e \
- --hash=sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51 \
- --hash=sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506 \
- --hash=sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73 \
- --hash=sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7 \
- --hash=sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5 \
- --hash=sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57 \
- --hash=sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4 \
- --hash=sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd \
- --hash=sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b \
- --hash=sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41 \
- --hash=sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe \
- --hash=sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59 \
- --hash=sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8 \
- --hash=sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f \
- --hash=sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e \
- --hash=sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750 \
- --hash=sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1 \
- --hash=sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96 \
- --hash=sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc \
- --hash=sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440 \
- --hash=sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe \
- --hash=sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38 \
- --hash=sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950 \
- --hash=sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2 \
- --hash=sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd \
- --hash=sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce \
- --hash=sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66 \
- --hash=sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3 \
- --hash=sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86
+regex==2024.9.11 \
+ --hash=sha256:01c2acb51f8a7d6494c8c5eafe3d8e06d76563d8a8a4643b37e9b2dd8a2ff623 \
+ --hash=sha256:02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199 \
+ --hash=sha256:040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664 \
+ --hash=sha256:042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f \
+ --hash=sha256:079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca \
+ --hash=sha256:07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066 \
+ --hash=sha256:09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca \
+ --hash=sha256:0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39 \
+ --hash=sha256:0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d \
+ --hash=sha256:0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6 \
+ --hash=sha256:0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35 \
+ --hash=sha256:1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408 \
+ --hash=sha256:16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5 \
+ --hash=sha256:18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a \
+ --hash=sha256:18e707ce6c92d7282dfce370cd205098384b8ee21544e7cb29b8aab955b66fa9 \
+ --hash=sha256:220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92 \
+ --hash=sha256:23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766 \
+ --hash=sha256:23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168 \
+ --hash=sha256:297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca \
+ --hash=sha256:2b08fce89fbd45664d3df6ad93e554b6c16933ffa9d55cb7e01182baaf971508 \
+ --hash=sha256:2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df \
+ --hash=sha256:313ea15e5ff2a8cbbad96ccef6be638393041b0a7863183c2d31e0c6116688cf \
+ --hash=sha256:323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b \
+ --hash=sha256:35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4 \
+ --hash=sha256:3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268 \
+ --hash=sha256:3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6 \
+ --hash=sha256:46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c \
+ --hash=sha256:4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62 \
+ --hash=sha256:49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231 \
+ --hash=sha256:4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36 \
+ --hash=sha256:54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba \
+ --hash=sha256:54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4 \
+ --hash=sha256:55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e \
+ --hash=sha256:57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822 \
+ --hash=sha256:587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4 \
+ --hash=sha256:5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d \
+ --hash=sha256:5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71 \
+ --hash=sha256:6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50 \
+ --hash=sha256:635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d \
+ --hash=sha256:64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad \
+ --hash=sha256:69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8 \
+ --hash=sha256:6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8 \
+ --hash=sha256:6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8 \
+ --hash=sha256:6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd \
+ --hash=sha256:6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16 \
+ --hash=sha256:73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664 \
+ --hash=sha256:7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a \
+ --hash=sha256:7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f \
+ --hash=sha256:846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd \
+ --hash=sha256:85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a \
+ --hash=sha256:8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9 \
+ --hash=sha256:8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199 \
+ --hash=sha256:98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d \
+ --hash=sha256:9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963 \
+ --hash=sha256:9e8719792ca63c6b8340380352c24dcb8cd7ec49dae36e963742a275dfae6009 \
+ --hash=sha256:a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a \
+ --hash=sha256:a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679 \
+ --hash=sha256:a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96 \
+ --hash=sha256:a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42 \
+ --hash=sha256:a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8 \
+ --hash=sha256:ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e \
+ --hash=sha256:b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7 \
+ --hash=sha256:b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8 \
+ --hash=sha256:b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802 \
+ --hash=sha256:be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366 \
+ --hash=sha256:c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137 \
+ --hash=sha256:c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784 \
+ --hash=sha256:c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29 \
+ --hash=sha256:c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3 \
+ --hash=sha256:c94bb0a9f1db10a1d16c00880bdebd5f9faf267273b8f5bd1878126e0fbde771 \
+ --hash=sha256:cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60 \
+ --hash=sha256:ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a \
+ --hash=sha256:d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4 \
+ --hash=sha256:d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0 \
+ --hash=sha256:dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84 \
+ --hash=sha256:df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd \
+ --hash=sha256:e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1 \
+ --hash=sha256:e464b467f1588e2c42d26814231edecbcfe77f5ac414d92cbf4e7b55b2c2a776 \
+ --hash=sha256:e4c22e1ac1f1ec1e09f72e6c44d8f2244173db7eb9629cc3a346a8d7ccc31142 \
+ --hash=sha256:e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89 \
+ --hash=sha256:e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c \
+ --hash=sha256:e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8 \
+ --hash=sha256:e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35 \
+ --hash=sha256:eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a \
+ --hash=sha256:eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86 \
+ --hash=sha256:ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9 \
+ --hash=sha256:ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64 \
+ --hash=sha256:eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554 \
+ --hash=sha256:f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85 \
+ --hash=sha256:f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb \
+ --hash=sha256:f745ec09bc1b0bd15cfc73df6fa4f726dcc26bb16c23a03f9e3367d357eeedd0 \
+ --hash=sha256:f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8 \
+ --hash=sha256:f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb \
+ --hash=sha256:faa3c142464efec496967359ca99696c896c591c56c53506bac1ad465f66e919
# via mkdocs-material
requests==2.32.3 \
--hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
@@ -546,6 +571,10 @@ sniffio==1.3.1 \
# via
# anyio
# httpx
+super-collections==0.5.3 \
+ --hash=sha256:907d35b25dc4070910e8254bf2f5c928348af1cf8a1f1e8259e06c666e902cff \
+ --hash=sha256:94c1ec96c0a0d5e8e7d389ed8cde6882ac246940507c5e6b86e91945c2968d46
+ # via mkdocs-macros-plugin
termcolor==2.4.0 \
--hash=sha256:9297c0df9c99445c2412e832e882a7884038a25617c60cea2ad69488d4040d63 \
--hash=sha256:aab9e56047c8ac41ed798fa36d892a37aca6b3e9159f3e0c24bc64a9b3ac7b7a
@@ -595,7 +624,7 @@ wcmatch==8.5.2 \
--hash=sha256:17d3ad3758f9d0b5b4dedc770b65420d4dac62e680229c287bf24c9db856a478 \
--hash=sha256:a70222b86dea82fb382dd87b73278c10756c138bd6f8f714e2183128887b9eb2
# via mkdocs-include-markdown-plugin
-zipp==3.20.0 \
- --hash=sha256:0145e43d89664cfe1a2e533adc75adafed82fe2da404b4bbb6b026c0157bdb31 \
- --hash=sha256:58da6168be89f0be59beb194da1250516fdaa062ccebd30127ac65d30045e10d
+zipp==3.20.2 \
+ --hash=sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350 \
+ --hash=sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29
# via importlib-metadata
diff --git a/pyproject.toml b/pyproject.toml
index a8c23e75d8..32e336ba22 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -20,13 +20,30 @@ src = ["src/backend/InvenTree"]
"__init__.py" = ["D104"]
[tool.ruff.lint]
-select = ["A", "B", "C4", "D", "I", "N", "F"]
+select = ["A", "B", "C", "C4", "D", "F", "I", "N", "SIM", "PIE", "PLE", "PLW", "RUF", "UP", "W"]
# Things that should be enabled in the future:
# - LOG
# - DJ # for Django stuff
# - S # for security stuff (bandit)
ignore = [
+ "PLE1205",
+ # - PLE1205 - Too many arguments for logging format string
+ "PLW2901",
+ # - PLW2901 - Outer {outer_kind} variable {name} overwritten by inner {inner_kind} target
+ "PLW0602","PLW0603","PLW0604", # global variable things
+ "RUF015",
+ # - RUF015 - Prefer next({iterable}) over single element slice
+ "RUF012",
+ # - RUF012 - Mutable class attributes should be annotated with typing.ClassVar
+ "SIM117",
+ # - SIM117 - Use a single with statement with multiple contexts instead of nested with statements
+ "SIM102",
+ # - SIM102 - Use a single if statement instead of nested if statements
+ "SIM105",
+ # - SIM105 - Use contextlib.suppress({exception}) instead of try-except-pass
+ "C901",
+ # - C901 - function is too complex
"N999",
# - N802 - function name should be lowercase
"N802",
@@ -36,13 +53,15 @@ ignore = [
"N812",
# - D417 Missing argument descriptions in the docstring
"D417",
+ # - RUF032 - decimal-from-float-literal
+ "RUF032",
# TODO These should be followed up and fixed
# - B904 Within an `except` clause, raise exceptions
"B904",
# Remove fast
- "A001", "A002","A003","B018"
+ "A002", "B018"
]
[tool.ruff.lint.pydocstyle]
diff --git a/readthedocs.yml b/readthedocs.yml
index f9a08ce2a9..f9f48ec0e2 100644
--- a/readthedocs.yml
+++ b/readthedocs.yml
@@ -17,6 +17,6 @@ build:
- echo "Generating API schema file"
- pip install -U invoke
- invoke migrate
- - invoke export-settings-definitions --filename docs/inventree_settings.json --overwrite
- - invoke schema --filename docs/schema.yml --ignore-warnings
+ - invoke int.export-settings-definitions --filename docs/inventree_settings.json --overwrite
+ - invoke dev.schema --filename docs/schema.yml --ignore-warnings
- python docs/extract_schema.py docs/schema.yml
diff --git a/src/backend/InvenTree/InvenTree/admin.py b/src/backend/InvenTree/InvenTree/admin.py
index 4920e0038f..66346e9eef 100644
--- a/src/backend/InvenTree/InvenTree/admin.py
+++ b/src/backend/InvenTree/InvenTree/admin.py
@@ -104,14 +104,16 @@ class InvenTreeResource(ModelResource):
attribute = getattr(field, 'attribute', field_name)
# Check if the associated database field is a non-nullable string
- if db_field := db_fields.get(attribute):
- if (
+ if (
+ (db_field := db_fields.get(attribute))
+ and (
isinstance(db_field, CharField)
and db_field.blank
and not db_field.null
- ):
- if column not in self.CONVERT_NULL_FIELDS:
- self.CONVERT_NULL_FIELDS.append(column)
+ )
+ and column not in self.CONVERT_NULL_FIELDS
+ ):
+ self.CONVERT_NULL_FIELDS.append(column)
return super().before_import(dataset, using_transactions, dry_run, **kwargs)
diff --git a/src/backend/InvenTree/InvenTree/api.py b/src/backend/InvenTree/InvenTree/api.py
index 952ddb3ff4..022c9d6628 100644
--- a/src/backend/InvenTree/InvenTree/api.py
+++ b/src/backend/InvenTree/InvenTree/api.py
@@ -26,7 +26,7 @@ from part.models import Part
from plugin.serializers import MetadataSerializer
from users.models import ApiToken
-from .email import is_email_configured
+from .helpers_email import is_email_configured
from .mixins import ListAPI, RetrieveUpdateAPI
from .status import check_system_health, is_worker_running
from .version import inventreeApiText
@@ -77,7 +77,7 @@ class LicenseView(APIView):
# Ensure we do not have any duplicate 'name' values in the list
for entry in data:
name = None
- for key in entry.keys():
+ for key in entry:
if key.lower() == 'name':
name = entry[key]
break
@@ -221,6 +221,7 @@ class InfoView(AjaxView):
'instance': InvenTree.version.inventreeInstanceName(),
'apiVersion': InvenTree.version.inventreeApiVersion(),
'worker_running': is_worker_running(),
+ 'worker_count': settings.BACKGROUND_WORKER_COUNT,
'worker_pending_tasks': self.worker_pending_tasks(),
'plugins_enabled': settings.PLUGINS_ENABLED,
'plugins_install_disabled': settings.PLUGINS_INSTALL_DISABLED,
@@ -321,7 +322,6 @@ class BulkDeleteMixin:
Raises:
ValidationError: If the deletion should not proceed
"""
- pass
def filter_delete_queryset(self, queryset, request):
"""Provide custom filtering for the queryset *before* it is deleted.
@@ -380,11 +380,26 @@ class BulkDeleteMixin:
# Filter by provided item ID values
if items:
- queryset = queryset.filter(id__in=items)
+ try:
+ queryset = queryset.filter(id__in=items)
+ except Exception:
+ raise ValidationError({
+ 'non_field_errors': _('Invalid items list provided')
+ })
# Filter by provided filters
if filters:
- queryset = queryset.filter(**filters)
+ try:
+ queryset = queryset.filter(**filters)
+ except Exception:
+ raise ValidationError({
+ 'non_field_errors': _('Invalid filters provided')
+ })
+
+ if queryset.count() == 0:
+ raise ValidationError({
+ 'non_field_errors': _('No items found to delete')
+ })
# Run a final validation step (should raise an error if the deletion should not proceed)
self.validate_delete(queryset, request)
@@ -398,8 +413,6 @@ class BulkDeleteMixin:
class ListCreateDestroyAPIView(BulkDeleteMixin, ListCreateAPI):
"""Custom API endpoint which provides BulkDelete functionality in addition to List and Create."""
- ...
-
class APISearchViewSerializer(serializers.Serializer):
"""Serializer for the APISearchView."""
diff --git a/src/backend/InvenTree/InvenTree/api_version.py b/src/backend/InvenTree/InvenTree/api_version.py
index f1df853784..995e0cd4c8 100644
--- a/src/backend/InvenTree/InvenTree/api_version.py
+++ b/src/backend/InvenTree/InvenTree/api_version.py
@@ -1,12 +1,106 @@
"""InvenTree API version information."""
# InvenTree API version
-INVENTREE_API_VERSION = 248
+INVENTREE_API_VERSION = 277
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
INVENTREE_API_TEXT = """
+
+v277 - 2024-11-01 : https://github.com/inventree/InvenTree/pull/8278
+ - Allow build order list to be filtered by "outstanding" (alias for "active")
+
+v276 - 2024-10-31 : https://github.com/inventree/InvenTree/pull/8403
+ - Adds 'destination' field to the PurchaseOrder model and API endpoints
+
+v275 - 2024-10-31 : https://github.com/inventree/InvenTree/pull/8396
+ - Adds SKU and MPN fields to the StockItem serializer
+ - Additional export options for the StockItem serializer
+
+v274 - 2024-10-29 : https://github.com/inventree/InvenTree/pull/8392
+ - Add more detailed information to NotificationEntry API serializer
+
+v273 - 2024-10-28 : https://github.com/inventree/InvenTree/pull/8376
+ - Fixes for the BuildLine API endpoint
+
+v272 - 2024-10-25 : https://github.com/inventree/InvenTree/pull/8343
+ - Adjustments to BuildLine API serializers
+
+v271 - 2024-10-22 : https://github.com/inventree/InvenTree/pull/8331
+ - Fixes for SalesOrderLineItem endpoints
+
+v270 - 2024-10-19 : https://github.com/inventree/InvenTree/pull/8307
+ - Adds missing date fields from order API endpoint(s)
+
+v269 - 2024-10-16 : https://github.com/inventree/InvenTree/pull/8295
+ - Adds "include_variants" filter to the BuildOrder API endpoint
+ - Adds "include_variants" filter to the SalesOrder API endpoint
+ - Adds "include_variants" filter to the PurchaseOrderLineItem API endpoint
+ - Adds "include_variants" filter to the ReturnOrder API endpoint
+
+268 - 2024-10-11 : https://github.com/inventree/InvenTree/pull/8274
+ - Adds "in_stock" attribute to the StockItem serializer
+
+267 - 2024-10-8 : https://github.com/inventree/InvenTree/pull/8250
+ - Remove "allocations" field from the SalesOrderShipment API endpoint(s)
+ - Add "allocated_items" field to the SalesOrderShipment API endpoint(s)
+
+266 - 2024-10-07 : https://github.com/inventree/InvenTree/pull/8249
+ - Tweak SalesOrderShipment API for more efficient data retrieval
+
+265 - 2024-10-07 : https://github.com/inventree/InvenTree/pull/8228
+ - Adds API endpoint for providing custom admin integration details for plugins
+
+264 - 2024-10-03 : https://github.com/inventree/InvenTree/pull/8231
+ - Adds Sales Order Shipment attachment model type
+
+263 - 2024-09-30 : https://github.com/inventree/InvenTree/pull/8194
+ - Adds Sales Order Shipment report
+
+262 - 2024-09-30 : https://github.com/inventree/InvenTree/pull/8220
+ - Tweak permission requirements for uninstalling plugins via API
+
+261 - 2024-09-26 : https://github.com/inventree/InvenTree/pull/8184
+ - Fixes for BuildOrder API serializers
+
+v260 - 2024-09-26 : https://github.com/inventree/InvenTree/pull/8190
+ - Adds facility for server-side context data to be passed to client-side plugins
+
+v259 - 2024-09-20 : https://github.com/inventree/InvenTree/pull/8137
+ - Implements new API endpoint for enabling custom UI features via plugins
+
+v258 - 2024-09-24 : https://github.com/inventree/InvenTree/pull/8163
+ - Enhances the existing PartScheduling API endpoint
+ - Adds a formal DRF serializer to the endpoint
+
+v257 - 2024-09-22 : https://github.com/inventree/InvenTree/pull/8150
+ - Adds API endpoint for reporting barcode scan history
+
+v256 - 2024-09-19 : https://github.com/inventree/InvenTree/pull/7704
+ - Adjustments for "stocktake" (stock history) API endpoints
+
+v255 - 2024-09-19 : https://github.com/inventree/InvenTree/pull/8145
+ - Enables copying line items when duplicating an order
+
+v254 - 2024-09-14 : https://github.com/inventree/InvenTree/pull/7470
+ - Implements new API endpoints for enabling custom UI functionality via plugins
+
+v253 - 2024-09-14 : https://github.com/inventree/InvenTree/pull/7944
+ - Adjustments for user API endpoints
+
+v252 - 2024-09-13 : https://github.com/inventree/InvenTree/pull/8040
+ - Add endpoint for listing all known units
+
+v251 - 2024-09-06 : https://github.com/inventree/InvenTree/pull/8018
+ - Adds "attach_to_model" field to the ReporTemplate model
+
+v250 - 2024-09-04 : https://github.com/inventree/InvenTree/pull/8069
+ - Fixes 'revision' field definition in Part serializer
+
+v249 - 2024-08-23 : https://github.com/inventree/InvenTree/pull/7978
+ - Sort status enums
+
v248 - 2024-08-23 : https://github.com/inventree/InvenTree/pull/7965
- Small adjustments to labels for new custom status fields
diff --git a/src/backend/InvenTree/InvenTree/apps.py b/src/backend/InvenTree/InvenTree/apps.py
index accd545980..8aed2f09b5 100644
--- a/src/backend/InvenTree/InvenTree/apps.py
+++ b/src/backend/InvenTree/InvenTree/apps.py
@@ -40,9 +40,14 @@ class InvenTreeConfig(AppConfig):
- Adding users set in the current environment
"""
# skip loading if plugin registry is not loaded or we run in a background thread
+
+ if not InvenTree.ready.isPluginRegistryLoaded():
+ return
+
+ # Skip if not in worker or main thread
if (
- not InvenTree.ready.isPluginRegistryLoaded()
- or not InvenTree.ready.isInMainThread()
+ not InvenTree.ready.isInMainThread()
+ and not InvenTree.ready.isInWorkerThread()
):
return
@@ -52,7 +57,6 @@ class InvenTreeConfig(AppConfig):
if InvenTree.ready.canAppAccessDatabase() or settings.TESTING_ENV:
self.remove_obsolete_tasks()
-
self.collect_tasks()
self.start_background_tasks()
@@ -125,7 +129,7 @@ class InvenTreeConfig(AppConfig):
for task in tasks:
ref_name = f'{task.func.__module__}.{task.func.__name__}'
- if ref_name in existing_tasks.keys():
+ if ref_name in existing_tasks:
# This task already exists - update the details if required
existing_task = existing_tasks[ref_name]
diff --git a/src/backend/InvenTree/InvenTree/config.py b/src/backend/InvenTree/InvenTree/config.py
index 008da3cccb..5c62fc66c6 100644
--- a/src/backend/InvenTree/InvenTree/config.py
+++ b/src/backend/InvenTree/InvenTree/config.py
@@ -131,7 +131,7 @@ def load_config_data(set_cache: bool = False) -> map:
cfg_file = get_config_file()
- with open(cfg_file, 'r') as cfg:
+ with open(cfg_file, encoding='utf-8') as cfg:
data = yaml.safe_load(cfg)
# Set the cache if requested
diff --git a/src/backend/InvenTree/InvenTree/context.py b/src/backend/InvenTree/InvenTree/context.py
index 78a9443130..bbdf5f6eb6 100644
--- a/src/backend/InvenTree/InvenTree/context.py
+++ b/src/backend/InvenTree/InvenTree/context.py
@@ -1,8 +1,6 @@
-# -*- coding: utf-8 -*-
-
"""Provides extra global data to all templates."""
-import InvenTree.email
+import InvenTree.helpers_email
import InvenTree.ready
import InvenTree.status
from generic.states.custom import get_custom_classes
@@ -27,7 +25,7 @@ def health_status(request):
status = {
'django_q_running': InvenTree.status.is_worker_running(),
- 'email_configured': InvenTree.email.is_email_configured(),
+ 'email_configured': InvenTree.helpers_email.is_email_configured(),
}
# The following keys are required to denote system health
@@ -75,7 +73,7 @@ def user_roles(request):
roles = {}
- for role in RuleSet.get_ruleset_models().keys():
+ for role in RuleSet.get_ruleset_models():
permissions = {}
for perm in ['view', 'add', 'change', 'delete']:
diff --git a/src/backend/InvenTree/InvenTree/conversion.py b/src/backend/InvenTree/InvenTree/conversion.py
index 61f1850899..0701bc3eb2 100644
--- a/src/backend/InvenTree/InvenTree/conversion.py
+++ b/src/backend/InvenTree/InvenTree/conversion.py
@@ -2,6 +2,7 @@
import logging
import re
+from typing import Optional
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
@@ -95,7 +96,7 @@ def from_engineering_notation(value):
"""
value = str(value).strip()
- pattern = '(\d+)([a-zA-Z]+)(\d+)(.*)'
+ pattern = r'(\d+)([a-zA-Z]+)(\d+)(.*)'
if match := re.match(pattern, value):
left, prefix, right, suffix = match.groups()
@@ -133,7 +134,7 @@ def convert_value(value, unit):
return value
-def convert_physical_value(value: str, unit: str = None, strip_units=True):
+def convert_physical_value(value: str, unit: Optional[str] = None, strip_units=True):
"""Validate that the provided value is a valid physical quantity.
Arguments:
@@ -203,7 +204,7 @@ def convert_physical_value(value: str, unit: str = None, strip_units=True):
if unit:
raise ValidationError(_(f'Could not convert {original} to {unit}'))
else:
- raise ValidationError(_('Invalid quantity supplied'))
+ raise ValidationError(_('Invalid quantity provided'))
# 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
@@ -217,7 +218,7 @@ def convert_physical_value(value: str, unit: str = None, strip_units=True):
magnitude = float(ureg.Quantity(magnitude).to_base_units().magnitude)
except Exception as exc:
- raise ValidationError(_(f'Invalid quantity supplied ({exc})'))
+ raise ValidationError(_('Invalid quantity provided') + f': ({exc})')
if strip_units:
return magnitude
@@ -245,8 +246,4 @@ def is_dimensionless(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
+ return value.to_base_units().units == ureg.dimensionless
diff --git a/src/backend/InvenTree/InvenTree/exceptions.py b/src/backend/InvenTree/InvenTree/exceptions.py
index 12328994e7..efe941ddfd 100644
--- a/src/backend/InvenTree/InvenTree/exceptions.py
+++ b/src/backend/InvenTree/InvenTree/exceptions.py
@@ -1,7 +1,6 @@
"""Custom exception handling for the DRF API."""
# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
import logging
import sys
@@ -41,10 +40,7 @@ def log_error(path, error_name=None, error_info=None, error_data=None):
if kind in settings.IGNORED_ERRORS:
return
- if error_name:
- kind = error_name
- else:
- kind = getattr(kind, '__name__', 'Unknown Error')
+ kind = error_name or getattr(kind, '__name__', 'Unknown Error')
if error_info:
info = error_info
diff --git a/src/backend/InvenTree/InvenTree/exchange.py b/src/backend/InvenTree/InvenTree/exchange.py
index ab02883058..d53e6ad49a 100644
--- a/src/backend/InvenTree/InvenTree/exchange.py
+++ b/src/backend/InvenTree/InvenTree/exchange.py
@@ -31,10 +31,7 @@ class InvenTreeExchange(SimpleExchangeBackend):
# Find the selected exchange rate plugin
slug = get_global_setting('CURRENCY_UPDATE_PLUGIN', create=False)
- if slug:
- plugin = registry.get_plugin(slug)
- else:
- plugin = None
+ plugin = registry.get_plugin(slug) if slug else None
if not plugin:
# Find the first active currency exchange plugin
diff --git a/src/backend/InvenTree/InvenTree/fields.py b/src/backend/InvenTree/InvenTree/fields.py
index 01efe65ae1..2029235c7c 100644
--- a/src/backend/InvenTree/InvenTree/fields.py
+++ b/src/backend/InvenTree/InvenTree/fields.py
@@ -93,9 +93,8 @@ class InvenTreeModelMoneyField(ModelMoneyField):
allow_negative = kwargs.pop('allow_negative', False)
# If no validators are provided, add some "standard" ones
- if len(validators) == 0:
- if not allow_negative:
- validators.append(MinMoneyValidator(0))
+ if len(validators) == 0 and not allow_negative:
+ validators.append(MinMoneyValidator(0))
kwargs['validators'] = validators
@@ -134,9 +133,9 @@ class DatePickerFormField(forms.DateField):
def __init__(self, **kwargs):
"""Set up custom values."""
help_text = kwargs.get('help_text', _('Enter date'))
- label = kwargs.get('label', None)
+ label = kwargs.get('label')
required = kwargs.get('required', False)
- initial = kwargs.get('initial', None)
+ initial = kwargs.get('initial')
widget = forms.DateInput(attrs={'type': 'date'})
diff --git a/src/backend/InvenTree/InvenTree/filters.py b/src/backend/InvenTree/InvenTree/filters.py
index f3182d0931..44b4b6143c 100644
--- a/src/backend/InvenTree/InvenTree/filters.py
+++ b/src/backend/InvenTree/InvenTree/filters.py
@@ -118,10 +118,7 @@ class InvenTreeOrderingFilter(filters.OrderingFilter):
field = field[1:]
# Are aliases defined for this field?
- if field in aliases:
- alias = aliases[field]
- else:
- alias = field
+ alias = aliases.get(field, field)
"""
Potentially, a single field could be "aliased" to multiple field,
diff --git a/src/backend/InvenTree/InvenTree/format.py b/src/backend/InvenTree/InvenTree/format.py
index 5cdeac1ed1..4d92722167 100644
--- a/src/backend/InvenTree/InvenTree/format.py
+++ b/src/backend/InvenTree/InvenTree/format.py
@@ -2,6 +2,7 @@
import re
import string
+from typing import Optional
from django.conf import settings
from django.utils import translation
@@ -106,10 +107,7 @@ def construct_format_regex(fmt_string: str) -> str:
# Add a named capture group for the format entry
if name:
# Check if integer values are required
- if _fmt.endswith('d'):
- c = '\d'
- else:
- c = '.'
+ c = '\\d' if _fmt.endswith('d') else '.'
# Specify width
# TODO: Introspect required width
@@ -160,7 +158,7 @@ def extract_named_group(name: str, value: str, fmt_string: str) -> str:
"""
info = parse_format_string(fmt_string)
- if name not in info.keys():
+ if name not in info:
raise NameError(_(f"Value '{name}' does not appear in pattern format"))
# Construct a regular expression for matching against the provided format string
@@ -182,8 +180,8 @@ def extract_named_group(name: str, value: str, fmt_string: str) -> str:
def format_money(
money: Money,
- decimal_places: int = None,
- format: str = None,
+ decimal_places: Optional[int] = None,
+ fmt: Optional[str] = None,
include_symbol: bool = True,
) -> str:
"""Format money object according to the currently set local.
@@ -191,7 +189,7 @@ def format_money(
Args:
money (Money): The money object to format
decimal_places (int): Number of decimal places to use
- format (str): Format pattern according LDML / the babel format pattern syntax (https://babel.pocoo.org/en/latest/numbers.html)
+ fmt (str): Format pattern according LDML / the babel format pattern syntax (https://babel.pocoo.org/en/latest/numbers.html)
Returns:
str: The formatted string
@@ -199,10 +197,10 @@ def format_money(
Raises:
ValueError: format string is incorrectly specified
"""
- language = None and translation.get_language() or settings.LANGUAGE_CODE
+ language = (None) or settings.LANGUAGE_CODE
locale = Locale.parse(translation.to_locale(language))
- if format:
- pattern = parse_pattern(format)
+ if fmt:
+ pattern = parse_pattern(fmt)
else:
pattern = locale.currency_formats['standard']
if decimal_places is not None:
diff --git a/src/backend/InvenTree/InvenTree/forms.py b/src/backend/InvenTree/InvenTree/forms.py
index 0997f1a38b..f2e73b253e 100644
--- a/src/backend/InvenTree/InvenTree/forms.py
+++ b/src/backend/InvenTree/InvenTree/forms.py
@@ -266,9 +266,8 @@ class RegistratonMixin:
raise forms.ValidationError(
_('The provided primary email address is not valid.')
)
- else:
- if split_email[1] == option[1:]:
- return super().clean_email(email)
+ elif split_email[1] == option[1:]:
+ return super().clean_email(email)
logger.info('The provided email domain for %s is not approved', email)
raise forms.ValidationError(_('The provided email domain is not approved.'))
diff --git a/src/backend/InvenTree/InvenTree/helpers.py b/src/backend/InvenTree/InvenTree/helpers.py
index 2ddae791cf..94d9952191 100644
--- a/src/backend/InvenTree/InvenTree/helpers.py
+++ b/src/backend/InvenTree/InvenTree/helpers.py
@@ -2,6 +2,7 @@
import datetime
import hashlib
+import inspect
import io
import logging
import os
@@ -9,17 +10,18 @@ import os.path
import re
from decimal import Decimal, InvalidOperation
from pathlib import Path
-from typing import TypeVar, Union
+from typing import Optional, TypeVar, Union
from wsgiref.util import FileWrapper
-import django.utils.timezone as timezone
from django.conf import settings
from django.contrib.staticfiles.storage import StaticFilesStorage
from django.core.exceptions import FieldError, ValidationError
from django.core.files.storage import Storage, default_storage
from django.http import StreamingHttpResponse
+from django.utils import timezone
from django.utils.translation import gettext_lazy as _
+import bleach
import pytz
import regex
from bleach import clean
@@ -97,10 +99,7 @@ def generateTestKey(test_name: str) -> str:
if char.isidentifier():
return True
- if char.isalnum():
- return True
-
- return False
+ return bool(char.isalnum())
# Remove any characters that cannot be used to represent a variable
key = ''.join([c for c in key if valid_char(c)])
@@ -435,7 +434,7 @@ def DownloadFile(
return response
-def increment_serial_number(serial):
+def increment_serial_number(serial, part=None):
"""Given a serial number, (attempt to) generate the *next* serial number.
Note: This method is exposed to custom plugins.
@@ -446,6 +445,7 @@ def increment_serial_number(serial):
Returns:
incremented value, or None if incrementing could not be performed.
"""
+ from InvenTree.exceptions import log_error
from plugin.registry import registry
# Ensure we start with a string value
@@ -454,16 +454,30 @@ def increment_serial_number(serial):
# First, let any plugins attempt to increment the serial number
for plugin in registry.with_mixin('validation'):
- result = plugin.increment_serial_number(serial)
- if result is not None:
- return str(result)
+ try:
+ if not hasattr(plugin, 'increment_serial_number'):
+ continue
+
+ signature = inspect.signature(plugin.increment_serial_number)
+
+ # Note: 2024-08-21 - The 'part' parameter has been added to the signature
+ if 'part' in signature.parameters:
+ result = plugin.increment_serial_number(serial, part=part)
+ else:
+ result = plugin.increment_serial_number(serial)
+ if result is not None:
+ return str(result)
+ except Exception:
+ log_error(f'{plugin.slug}.increment_serial_number')
# If we get to here, no plugins were able to "increment" the provided serial value
# Attempt to perform increment according to some basic rules
return increment(serial)
-def extract_serial_numbers(input_string, expected_quantity: int, starting_value=None):
+def extract_serial_numbers(
+ input_string, expected_quantity: int, starting_value=None, part=None
+):
"""Extract a list of serial numbers from a provided input string.
The input string can be specified using the following concepts:
@@ -483,27 +497,29 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value=
starting_value: Provide a starting value for the sequence (or None)
"""
if starting_value is None:
- starting_value = increment_serial_number(None)
+ starting_value = increment_serial_number(None, part=part)
try:
expected_quantity = int(expected_quantity)
except ValueError:
raise ValidationError([_('Invalid quantity provided')])
- if input_string:
- input_string = str(input_string).strip()
- else:
- input_string = ''
+ if expected_quantity > 1000:
+ raise ValidationError({
+ 'quantity': [_('Cannot serialize more than 1000 items at once')]
+ })
+
+ input_string = str(input_string).strip() if input_string else ''
if len(input_string) == 0:
raise ValidationError([_('Empty serial number string')])
- next_value = increment_serial_number(starting_value)
+ next_value = increment_serial_number(starting_value, part=part)
# Substitute ~ character with latest value
while '~' in input_string and next_value:
input_string = input_string.replace('~', str(next_value), 1)
- next_value = increment_serial_number(next_value)
+ next_value = increment_serial_number(next_value, part=part)
# Split input string by whitespace or comma (,) characters
groups = re.split(r'[\s,]+', input_string)
@@ -557,7 +573,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value=
if a == b:
# Invalid group
- add_error(_(f'Invalid group range: {group}'))
+ add_error(_(f'Invalid group: {group}'))
continue
group_items = []
@@ -600,7 +616,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value=
for item in group_items:
add_serial(item)
else:
- add_error(_(f'Invalid group range: {group}'))
+ add_error(_(f'Invalid group: {group}'))
else:
# In the case of a different number of hyphens, simply add the entire group
@@ -618,14 +634,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(_(f'Invalid group sequence: {group}'))
+ add_error(_(f'Invalid group: {group}'))
continue
elif len(items) == 2:
try:
if items[1]:
sequence_count = int(items[1]) + 1
except ValueError:
- add_error(_(f'Invalid group sequence: {group}'))
+ add_error(_(f'Invalid group: {group}'))
continue
value = items[0]
@@ -644,7 +660,7 @@ def extract_serial_numbers(input_string, expected_quantity: int, starting_value=
for item in sequence_items:
add_serial(item)
else:
- add_error(_(f'Invalid group sequence: {group}'))
+ add_error(_(f'Invalid group: {group}'))
else:
# At this point, we assume that the 'group' is just a single serial value
@@ -800,14 +816,73 @@ def remove_non_printable_characters(
if remove_unicode:
# Remove Unicode control characters
if remove_newline:
- cleaned = regex.sub('[^\P{C}]+', '', cleaned)
+ cleaned = regex.sub(r'[^\P{C}]+', '', cleaned)
else:
# Use 'negative-lookahead' to exclude newline character
- cleaned = regex.sub('(?![\x0a])[^\P{C}]+', '', cleaned)
+ cleaned = regex.sub('(?![\x0a])[^\\P{C}]+', '', cleaned)
return cleaned
+def clean_markdown(value: str):
+ """Clean a markdown string.
+
+ This function will remove javascript and other potentially harmful content from the markdown string.
+ """
+ import markdown
+
+ try:
+ markdownify_settings = settings.MARKDOWNIFY['default']
+ except (AttributeError, KeyError):
+ markdownify_settings = {}
+
+ extensions = markdownify_settings.get('MARKDOWN_EXTENSIONS', [])
+ extension_configs = markdownify_settings.get('MARKDOWN_EXTENSION_CONFIGS', {})
+
+ # Generate raw HTML from provided markdown (without sanitizing)
+ # Note: The 'html' output_format is required to generate self closing tags, e.g. instead of
+ html = markdown.markdown(
+ value or '',
+ extensions=extensions,
+ extension_configs=extension_configs,
+ output_format='html',
+ )
+
+ # Bleach settings
+ whitelist_tags = markdownify_settings.get(
+ 'WHITELIST_TAGS', bleach.sanitizer.ALLOWED_TAGS
+ )
+ whitelist_attrs = markdownify_settings.get(
+ 'WHITELIST_ATTRS', bleach.sanitizer.ALLOWED_ATTRIBUTES
+ )
+ whitelist_styles = markdownify_settings.get(
+ 'WHITELIST_STYLES', bleach.css_sanitizer.ALLOWED_CSS_PROPERTIES
+ )
+ whitelist_protocols = markdownify_settings.get(
+ 'WHITELIST_PROTOCOLS', bleach.sanitizer.ALLOWED_PROTOCOLS
+ )
+ strip = markdownify_settings.get('STRIP', True)
+
+ css_sanitizer = bleach.css_sanitizer.CSSSanitizer(
+ allowed_css_properties=whitelist_styles
+ )
+ cleaner = bleach.Cleaner(
+ tags=whitelist_tags,
+ attributes=whitelist_attrs,
+ css_sanitizer=css_sanitizer,
+ protocols=whitelist_protocols,
+ strip=strip,
+ )
+
+ # Clean the HTML content (for comparison). This must be the same as the original content
+ clean_html = cleaner.clean(html)
+
+ if html != clean_html:
+ raise ValidationError(_('Data contains prohibited markdown content'))
+
+ return value
+
+
def hash_barcode(barcode_data):
"""Calculate a 'unique' hash for a barcode string.
@@ -827,7 +902,7 @@ def hash_barcode(barcode_data):
def hash_file(filename: Union[str, Path], storage: Union[Storage, None] = None):
"""Return the MD5 hash of a file."""
content = (
- open(filename, 'rb').read()
+ open(filename, 'rb').read() # noqa: SIM115
if storage is None
else storage.open(str(filename), 'rb').read()
)
@@ -865,7 +940,7 @@ def server_timezone() -> str:
return settings.TIME_ZONE
-def to_local_time(time, target_tz: str = None):
+def to_local_time(time, target_tz: Optional[str] = None):
"""Convert the provided time object to the local timezone.
Arguments:
@@ -947,7 +1022,14 @@ def get_objectreference(
ret = {}
if url_fnc:
ret['link'] = url_fnc()
- return {'name': str(item), 'model': str(model_cls._meta.verbose_name), **ret}
+
+ return {
+ 'name': str(item),
+ 'model_name': str(model_cls._meta.verbose_name),
+ 'model_type': str(model_cls._meta.model_name),
+ 'model_id': getattr(item, 'pk', None),
+ **ret,
+ }
Inheritors_T = TypeVar('Inheritors_T')
diff --git a/src/backend/InvenTree/InvenTree/email.py b/src/backend/InvenTree/InvenTree/helpers_email.py
similarity index 96%
rename from src/backend/InvenTree/InvenTree/email.py
rename to src/backend/InvenTree/InvenTree/helpers_email.py
index a5f7b283df..679a255928 100644
--- a/src/backend/InvenTree/InvenTree/email.py
+++ b/src/backend/InvenTree/InvenTree/helpers_email.py
@@ -62,7 +62,7 @@ def send_email(subject, body, recipients, from_email=None, html_message=None):
# If we are importing data, don't send emails
return
- if not InvenTree.email.is_email_configured() and not settings.TESTING:
+ if not is_email_configured() and not settings.TESTING:
# Email is not configured / enabled
return
@@ -86,4 +86,5 @@ def send_email(subject, body, recipients, from_email=None, html_message=None):
recipients,
fail_silently=False,
html_message=html_message,
+ group='notification',
)
diff --git a/src/backend/InvenTree/InvenTree/helpers_model.py b/src/backend/InvenTree/InvenTree/helpers_model.py
index 810c44c633..61e66d2900 100644
--- a/src/backend/InvenTree/InvenTree/helpers_model.py
+++ b/src/backend/InvenTree/InvenTree/helpers_model.py
@@ -114,10 +114,7 @@ def download_image_from_url(remote_url, timeout=2.5):
# Add user specified user-agent to request (if specified)
user_agent = get_global_setting('INVENTREE_DOWNLOAD_FROM_URL_USER_AGENT')
- if user_agent:
- headers = {'User-Agent': user_agent}
- else:
- headers = None
+ headers = {'User-Agent': user_agent} if user_agent else None
try:
response = requests.get(
@@ -130,7 +127,7 @@ def download_image_from_url(remote_url, timeout=2.5):
# Throw an error if anything goes wrong
response.raise_for_status()
except requests.exceptions.ConnectionError as exc:
- raise Exception(_('Connection error') + f': {str(exc)}')
+ raise Exception(_('Connection error') + f': {exc!s}')
except requests.exceptions.Timeout as exc:
raise exc
except requests.exceptions.HTTPError:
@@ -138,7 +135,7 @@ def download_image_from_url(remote_url, timeout=2.5):
_('Server responded with invalid status code') + f': {response.status_code}'
)
except Exception as exc:
- raise Exception(_('Exception occurred') + f': {str(exc)}')
+ raise Exception(_('Exception occurred') + f': {exc!s}')
if response.status_code != 200:
raise Exception(
@@ -213,9 +210,6 @@ def render_currency(
except Exception:
pass
- if decimal_places is None:
- decimal_places = get_global_setting('PRICING_DECIMAL_PLACES', 6)
-
if min_decimal_places is None:
min_decimal_places = get_global_setting('PRICING_DECIMAL_PLACES_MIN', 0)
@@ -225,17 +219,19 @@ def render_currency(
value = Decimal(str(money.amount)).normalize()
value = str(value)
- if '.' in value:
- decimals = len(value.split('.')[-1])
-
- decimals = max(decimals, min_decimal_places)
- decimals = min(decimals, decimal_places)
-
- decimal_places = decimals
+ if decimal_places is not None:
+ # Decimal place count is provided, use it
+ pass
+ elif '.' in value:
+ # If the value has a decimal point, use the number of decimal places in the value
+ decimal_places = len(value.split('.')[-1])
else:
- decimal_places = max(decimal_places, 2)
+ # No decimal point, use 2 as a default
+ decimal_places = 2
- decimal_places = max(decimal_places, max_decimal_places)
+ # Clip the decimal places to the specified range
+ decimal_places = max(decimal_places, min_decimal_places)
+ decimal_places = min(decimal_places, max_decimal_places)
return format_money(
money, decimal_places=decimal_places, include_symbol=include_symbol
diff --git a/src/backend/InvenTree/InvenTree/locales.py b/src/backend/InvenTree/InvenTree/locales.py
index 62e3a8bd9d..f68b0ae148 100644
--- a/src/backend/InvenTree/InvenTree/locales.py
+++ b/src/backend/InvenTree/InvenTree/locales.py
@@ -10,6 +10,8 @@ Additionally, update the following files with the new locale code:
- /src/frontend/.linguirc file
- /src/frontend/src/contexts/LanguageContext.tsx
+
+(and then run "invoke int.frontend-trans")
"""
from django.utils.translation import gettext_lazy as _
@@ -34,6 +36,7 @@ LOCALES = [
('it', _('Italian')),
('ja', _('Japanese')),
('ko', _('Korean')),
+ ('lt', _('Lithuanian')),
('lv', _('Latvian')),
('nl', _('Dutch')),
('no', _('Norwegian')),
diff --git a/src/backend/InvenTree/InvenTree/magic_login.py b/src/backend/InvenTree/InvenTree/magic_login.py
index 996e0b35d1..bc4e7c6ece 100644
--- a/src/backend/InvenTree/InvenTree/magic_login.py
+++ b/src/backend/InvenTree/InvenTree/magic_login.py
@@ -25,7 +25,7 @@ def send_simple_login_email(user, link):
)
send_mail(
- _(f'[{site_name}] Log in to the app'),
+ f'[{site_name}] ' + _('Log in to the app'),
email_plaintext_message,
settings.DEFAULT_FROM_EMAIL,
[user.email],
diff --git a/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py b/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py
index 77b00f73b5..ce7df416fc 100644
--- a/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py
+++ b/src/backend/InvenTree/InvenTree/management/commands/collectplugins.py
@@ -8,6 +8,7 @@ class Command(BaseCommand):
def handle(self, *args, **kwargs):
"""Run the management command."""
- from plugin.staticfiles import collect_plugins_static_files
+ import plugin.staticfiles
- collect_plugins_static_files()
+ plugin.staticfiles.collect_plugins_static_files()
+ plugin.staticfiles.clear_plugins_static_files()
diff --git a/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py b/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py
index 8587e936d0..fef25f676a 100644
--- a/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py
+++ b/src/backend/InvenTree/InvenTree/management/commands/export_settings_definitions.py
@@ -47,7 +47,7 @@ class Command(BaseCommand):
filename = kwargs.get('filename', 'inventree_settings.json')
- with open(filename, 'w') as f:
+ with open(filename, 'w', encoding='utf-8') as f:
json.dump(settings, f, indent=4)
print(f"Exported InvenTree settings definitions to '{filename}'")
diff --git a/src/backend/InvenTree/InvenTree/management/commands/migrate_icons.py b/src/backend/InvenTree/InvenTree/management/commands/migrate_icons.py
index c4e1305686..1ff5e6fd62 100644
--- a/src/backend/InvenTree/InvenTree/management/commands/migrate_icons.py
+++ b/src/backend/InvenTree/InvenTree/management/commands/migrate_icons.py
@@ -103,14 +103,14 @@ class Command(BaseCommand):
})
self.stdout.write(f'Writing icon map for {len(icons.keys())} icons')
- with open(kwargs['output_file'], 'w') as f:
+ with open(kwargs['output_file'], 'w', encoding='utf-8') as f:
json.dump(icons, f, indent=2)
self.stdout.write(f'Icon map written to {kwargs["output_file"]}')
# Import icon map file
if kwargs['input_file']:
- with open(kwargs['input_file'], 'r') as f:
+ with open(kwargs['input_file'], encoding='utf-8') as f:
icons = json.load(f)
self.stdout.write(f'Loaded icon map for {len(icons.keys())} icons')
diff --git a/src/backend/InvenTree/InvenTree/management/commands/prerender.py b/src/backend/InvenTree/InvenTree/management/commands/prerender.py
index 54ed4601a4..aa752e4e1d 100644
--- a/src/backend/InvenTree/InvenTree/management/commands/prerender.py
+++ b/src/backend/InvenTree/InvenTree/management/commands/prerender.py
@@ -19,10 +19,11 @@ def render_file(file_name, source, target, locales, ctx):
target_file = os.path.join(target, locale + '.' + file_name)
- with open(target_file, 'w') as localised_file:
- with lang_over(locale):
- rendered = render_to_string(os.path.join(source, file_name), ctx)
- localised_file.write(rendered)
+ with open(target_file, 'w', encoding='utf-8') as localised_file, lang_over(
+ locale
+ ):
+ rendered = render_to_string(os.path.join(source, file_name), ctx)
+ localised_file.write(rendered)
class Command(BaseCommand):
diff --git a/src/backend/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py b/src/backend/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py
index 72512f6e44..93f12f3436 100644
--- a/src/backend/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py
+++ b/src/backend/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py
@@ -35,7 +35,7 @@ class Command(BaseCommand):
img_paths.append(x.path)
if len(img_paths) > 0:
- if all((os.path.exists(path) for path in img_paths)):
+ if all(os.path.exists(path) for path in img_paths):
# All images exist - skip further work
return
diff --git a/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py b/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py
index 4cb4f21659..60a7cac51f 100644
--- a/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py
+++ b/src/backend/InvenTree/InvenTree/management/commands/remove_mfa.py
@@ -35,4 +35,4 @@ class Command(BaseCommand):
mfa_user[0].staticdevice_set.all().delete()
# TOTP tokens
mfa_user[0].totpdevice_set.all().delete()
- print(f'Removed all MFA methods for user {str(mfa_user[0])}')
+ print(f'Removed all MFA methods for user {mfa_user[0]!s}')
diff --git a/src/backend/InvenTree/InvenTree/metadata.py b/src/backend/InvenTree/InvenTree/metadata.py
index 15a5f2f079..0670c9b3ac 100644
--- a/src/backend/InvenTree/InvenTree/metadata.py
+++ b/src/backend/InvenTree/InvenTree/metadata.py
@@ -2,9 +2,13 @@
import logging
-from rest_framework import serializers
+from django.core.exceptions import PermissionDenied
+from django.http import Http404
+
+from rest_framework import exceptions, serializers
from rest_framework.fields import empty
from rest_framework.metadata import SimpleMetadata
+from rest_framework.request import clone_request
from rest_framework.utils import model_meta
import common.models
@@ -29,6 +33,40 @@ class InvenTreeMetadata(SimpleMetadata):
so we can perform lookup for ForeignKey related fields.
"""
+ def determine_actions(self, request, view):
+ """Determine the 'actions' available to the user for the given view.
+
+ Note that this differs from the standard DRF implementation,
+ in that we also allow annotation for the 'GET' method.
+
+ This allows the client to determine what fields are available,
+ even if they are only for a read (GET) operation.
+
+ See SimpleMetadata.determine_actions for more information.
+ """
+ actions = {}
+
+ for method in {'PUT', 'POST', 'GET'} & set(view.allowed_methods):
+ view.request = clone_request(request, method)
+ try:
+ # Test global permissions
+ if hasattr(view, 'check_permissions'):
+ view.check_permissions(view.request)
+ # Test object permissions
+ if method == 'PUT' and hasattr(view, 'get_object'):
+ view.get_object()
+ except (exceptions.APIException, PermissionDenied, Http404):
+ pass
+ else:
+ # If user has appropriate permissions for the view, include
+ # appropriate metadata about the fields that should be supplied.
+ serializer = view.get_serializer()
+ actions[method] = self.get_serializer_info(serializer)
+ finally:
+ view.request = request
+
+ return actions
+
def determine_metadata(self, request, view):
"""Overwrite the metadata to adapt to the request user."""
self.request = request
@@ -81,6 +119,7 @@ class InvenTreeMetadata(SimpleMetadata):
# Map the request method to a permission type
rolemap = {
+ 'GET': 'view',
'POST': 'add',
'PUT': 'change',
'PATCH': 'change',
@@ -102,10 +141,6 @@ class InvenTreeMetadata(SimpleMetadata):
if 'DELETE' in view.allowed_methods and check(user, table, 'delete'):
actions['DELETE'] = {}
- # Add a 'VIEW' action if we are allowed to view
- if 'GET' in view.allowed_methods and check(user, table, 'view'):
- actions['GET'] = {}
-
metadata['actions'] = actions
except AttributeError:
@@ -204,7 +239,7 @@ class InvenTreeMetadata(SimpleMetadata):
# Iterate through simple fields
for name, field in model_fields.fields.items():
- if name in serializer_info.keys():
+ if name in serializer_info:
if name in read_only_fields:
serializer_info[name]['read_only'] = True
@@ -236,7 +271,7 @@ class InvenTreeMetadata(SimpleMetadata):
# Iterate through relations
for name, relation in model_fields.relations.items():
- if name not in serializer_info.keys():
+ if name not in serializer_info:
# Skip relation not defined in serializer
continue
@@ -307,12 +342,12 @@ class InvenTreeMetadata(SimpleMetadata):
instance_filters = instance.api_instance_filters()
for field_name, field_filters in instance_filters.items():
- if field_name not in serializer_info.keys():
+ if field_name not in serializer_info:
# The field might be missing, but is added later on
# This function seems to get called multiple times?
continue
- if 'instance_filters' not in serializer_info[field_name].keys():
+ if 'instance_filters' not in serializer_info[field_name]:
serializer_info[field_name]['instance_filters'] = {}
for key, value in field_filters.items():
diff --git a/src/backend/InvenTree/InvenTree/middleware.py b/src/backend/InvenTree/InvenTree/middleware.py
index 5790c8c9b9..e528f4aa96 100644
--- a/src/backend/InvenTree/InvenTree/middleware.py
+++ b/src/backend/InvenTree/InvenTree/middleware.py
@@ -36,7 +36,7 @@ def get_token_from_request(request):
return None
-class AuthRequiredMiddleware(object):
+class AuthRequiredMiddleware:
"""Check for user to be authenticated."""
def __init__(self, get_response):
@@ -92,23 +92,18 @@ class AuthRequiredMiddleware(object):
# Allow static files to be accessed without auth
# Important for e.g. login page
- if request.path_info.startswith('/static/'):
- authorized = True
-
- # Unauthorized users can access the login page
- 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}'
+ if (
+ request.path_info.startswith('/static/')
+ or request.path_info.startswith('/accounts/')
+ or (
+ request.path_info.startswith(f'/{settings.FRONTEND_URL_BASE}/')
+ or request.path_info.startswith('/assets/')
+ or request.path_info == f'/{settings.FRONTEND_URL_BASE}'
+ )
+ or self.check_token(request)
):
authorized = True
- elif self.check_token(request):
- authorized = True
-
# No authorization was found for the request
if not authorized:
path = request.path_info
diff --git a/src/backend/InvenTree/InvenTree/mixins.py b/src/backend/InvenTree/InvenTree/mixins.py
index fd63726d96..ec4fa11f59 100644
--- a/src/backend/InvenTree/InvenTree/mixins.py
+++ b/src/backend/InvenTree/InvenTree/mixins.py
@@ -6,7 +6,11 @@ from rest_framework import generics, mixins, status
from rest_framework.response import Response
from InvenTree.fields import InvenTreeNotesField
-from InvenTree.helpers import remove_non_printable_characters, strip_html_tags
+from InvenTree.helpers import (
+ clean_markdown,
+ remove_non_printable_characters,
+ strip_html_tags,
+)
class CleanMixin:
@@ -57,6 +61,7 @@ class CleanMixin:
# By default, newline characters are removed
remove_newline = True
+ is_markdown = False
try:
if hasattr(self, 'serializer_class'):
@@ -64,11 +69,12 @@ class CleanMixin:
field = model._meta.get_field(field)
# The following field types allow newline characters
- allow_newline = [InvenTreeNotesField]
+ allow_newline = [(InvenTreeNotesField, True)]
for field_type in allow_newline:
- if issubclass(type(field), field_type):
+ if issubclass(type(field), field_type[0]):
remove_newline = False
+ is_markdown = field_type[1]
break
except AttributeError:
@@ -80,6 +86,9 @@ class CleanMixin:
cleaned, remove_newline=remove_newline
)
+ if is_markdown:
+ cleaned = clean_markdown(cleaned)
+
return cleaned
def clean_data(self, data: dict) -> dict:
@@ -128,14 +137,10 @@ class CreateAPI(CleanMixin, generics.CreateAPIView):
class RetrieveAPI(generics.RetrieveAPIView):
"""View for retrieve API."""
- pass
-
class RetrieveUpdateAPI(CleanMixin, generics.RetrieveUpdateAPIView):
"""View for retrieve and update API."""
- pass
-
class CustomDestroyModelMixin:
"""This mixin was created pass the kwargs from the API to the models."""
@@ -184,5 +189,9 @@ class RetrieveUpdateDestroyAPI(CleanMixin, generics.RetrieveUpdateDestroyAPIView
"""View for retrieve, update and destroy API."""
+class RetrieveDestroyAPI(generics.RetrieveDestroyAPIView):
+ """View for retrieve and destroy API."""
+
+
class UpdateAPI(CleanMixin, generics.UpdateAPIView):
"""View for update API."""
diff --git a/src/backend/InvenTree/InvenTree/models.py b/src/backend/InvenTree/InvenTree/models.py
index 7430ee5c9f..8b465222b2 100644
--- a/src/backend/InvenTree/InvenTree/models.py
+++ b/src/backend/InvenTree/InvenTree/models.py
@@ -10,8 +10,10 @@ from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.urls import reverse
+from django.urls.exceptions import NoReverseMatch
from django.utils.translation import gettext_lazy as _
+from django_q.models import Task
from error_report.models import Error
from mptt.exceptions import InvalidMove
from mptt.models import MPTTModel, TreeForeignKey
@@ -390,10 +392,7 @@ class ReferenceIndexingMixin(models.Model):
except Exception:
# If anything goes wrong, return the most recent reference
recent = cls.get_most_recent_item()
- if recent:
- reference = recent.reference
- else:
- reference = ''
+ reference = recent.reference if recent else ''
return reference
@@ -410,14 +409,14 @@ class ReferenceIndexingMixin(models.Model):
})
# Check that only 'allowed' keys are provided
- for key in info.keys():
- if key not in ctx.keys():
+ for key in info:
+ if key not in ctx:
raise ValidationError({
'value': _('Unknown format key specified') + f": '{key}'"
})
# Check that the 'ref' variable is specified
- if 'ref' not in info.keys():
+ if 'ref' not in info:
raise ValidationError({
'value': _('Missing required format key') + ": 'ref'"
})
@@ -442,7 +441,7 @@ class ReferenceIndexingMixin(models.Model):
)
# Check that the reference field can be rebuild
- cls.rebuild_reference_field(value, validate=True)
+ return cls.rebuild_reference_field(value, validate=True)
@classmethod
def rebuild_reference_field(cls, reference, validate=False):
@@ -859,7 +858,7 @@ class InvenTreeTree(MetadataMixin, PluginValidationMixin, MPTTModel):
Returns:
List of category names from the top level to this category
"""
- return self.parentpath + [self]
+ return [*self.parentpath, self]
def get_path(self):
"""Return a list of element in the item tree.
@@ -1054,6 +1053,71 @@ class InvenTreeBarcodeMixin(models.Model):
self.save()
+def notify_staff_users_of_error(instance, label: str, context: dict):
+ """Helper function to notify staff users of an error."""
+ import common.models
+ import common.notifications
+
+ try:
+ # Get all staff users
+ staff_users = get_user_model().objects.filter(is_staff=True)
+
+ target_users = []
+
+ # Send a notification to each staff user (unless they have disabled error notifications)
+ for user in staff_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,
+ label,
+ 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)
+
+
+@receiver(post_save, sender=Task, dispatch_uid='failure_post_save_notification')
+def after_failed_task(sender, instance: Task, created: bool, **kwargs):
+ """Callback when a new task failure log is generated."""
+ from django.conf import settings
+
+ max_attempts = int(settings.Q_CLUSTER.get('max_attempts', 5))
+ n = instance.attempt_count
+
+ # Only notify once the maximum number of attempts has been reached
+ if not instance.success and n >= max_attempts:
+ try:
+ url = InvenTree.helpers_model.construct_absolute_url(
+ reverse(
+ 'admin:django_q_failure_change', kwargs={'object_id': instance.pk}
+ )
+ )
+ except (ValueError, NoReverseMatch):
+ url = ''
+
+ notify_staff_users_of_error(
+ instance,
+ 'inventree.task_failure',
+ {
+ 'failure': instance,
+ 'name': _('Task Failure'),
+ 'message': _(
+ f"Background worker task '{instance.func}' failed after {n} attempts"
+ ),
+ 'link': url,
+ },
+ )
+
+
@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.
@@ -1062,41 +1126,21 @@ def after_error_logged(sender, instance: Error, created: bool, **kwargs):
"""
if created:
try:
- import common.models
- import common.notifications
-
- users = get_user_model().objects.filter(is_staff=True)
-
- link = InvenTree.helpers_model.construct_absolute_url(
+ url = InvenTree.helpers_model.construct_absolute_url(
reverse(
'admin:error_report_error_change', kwargs={'object_id': instance.pk}
)
)
+ except NoReverseMatch:
+ url = ''
- context = {
+ notify_staff_users_of_error(
+ instance,
+ 'inventree.error_log',
+ {
'error': instance,
'name': _('Server Error'),
'message': _('An error has been logged by the server.'),
- 'link': link,
- }
-
- 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) # noqa: LOG005
+ 'link': url,
+ },
+ )
diff --git a/src/backend/InvenTree/InvenTree/permissions.py b/src/backend/InvenTree/InvenTree/permissions.py
index 2bbf91c301..42088176ae 100644
--- a/src/backend/InvenTree/InvenTree/permissions.py
+++ b/src/backend/InvenTree/InvenTree/permissions.py
@@ -79,6 +79,9 @@ class RolePermission(permissions.BasePermission):
# Extract the model name associated with this request
model = get_model_for_view(view)
+ if model is None:
+ return True
+
app_label = model._meta.app_label
model_name = model._meta.model_name
@@ -99,14 +102,24 @@ class IsSuperuser(permissions.IsAdminUser):
return bool(request.user and request.user.is_superuser)
+class IsSuperuserOrReadOnly(permissions.IsAdminUser):
+ """Allow read-only access to any user, but write access is restricted to superuser users."""
+
+ def has_permission(self, request, view):
+ """Check if the user is a superuser."""
+ return bool(
+ (request.user and request.user.is_superuser)
+ or request.method in permissions.SAFE_METHODS
+ )
+
+
class IsStaffOrReadOnly(permissions.IsAdminUser):
"""Allows read-only access to any user, but write access is restricted to staff users."""
def has_permission(self, request, view):
"""Check if the user is a superuser."""
return bool(
- request.user
- and request.user.is_staff
+ (request.user and request.user.is_staff)
or request.method in permissions.SAFE_METHODS
)
diff --git a/src/backend/InvenTree/InvenTree/ready.py b/src/backend/InvenTree/InvenTree/ready.py
index b08941d1c0..dc83d3caaf 100644
--- a/src/backend/InvenTree/InvenTree/ready.py
+++ b/src/backend/InvenTree/InvenTree/ready.py
@@ -11,43 +11,37 @@ def isInTestMode():
def isImportingData():
"""Returns True if the database is currently importing (or exporting) data, e.g. 'loaddata' command is performed."""
- return any((x in sys.argv for x in ['flush', 'loaddata', 'dumpdata']))
+ return any(x in sys.argv for x in ['flush', 'loaddata', 'dumpdata'])
def isRunningMigrations():
"""Return True if the database is currently running migrations."""
return any(
- (
- x in sys.argv
- for x in ['migrate', 'makemigrations', 'showmigrations', 'runmigrations']
- )
+ x in sys.argv
+ for x in ['migrate', 'makemigrations', 'showmigrations', 'runmigrations']
)
def isRebuildingData():
"""Return true if any of the rebuilding commands are being executed."""
return any(
- (
- x in sys.argv
- for x in ['prerender', 'rebuild_models', 'rebuild_thumbnails', 'rebuild']
- )
+ x in sys.argv
+ for x in ['prerender', 'rebuild_models', 'rebuild_thumbnails', 'rebuild']
)
def isRunningBackup():
"""Return true if any of the backup commands are being executed."""
return any(
- (
- x in sys.argv
- for x in [
- 'backup',
- 'restore',
- 'dbbackup',
- 'dbresotore',
- 'mediabackup',
- 'mediarestore',
- ]
- )
+ x in sys.argv
+ for x in [
+ 'backup',
+ 'restore',
+ 'dbbackup',
+ 'dbresotore',
+ 'mediabackup',
+ 'mediarestore',
+ ]
)
@@ -64,10 +58,7 @@ def isInServerThread():
if 'runserver' in sys.argv:
return True
- if 'gunicorn' in sys.argv[0]:
- return True
-
- return False
+ return 'gunicorn' in sys.argv[0]
def isInMainThread():
@@ -128,11 +119,7 @@ def canAppAccessDatabase(
if not allow_plugins:
excluded_commands.extend(['collectplugins'])
- for cmd in excluded_commands:
- if cmd in sys.argv:
- return False
-
- return True
+ return all(cmd not in sys.argv for cmd in excluded_commands)
def isPluginRegistryLoaded():
diff --git a/src/backend/InvenTree/InvenTree/sentry.py b/src/backend/InvenTree/InvenTree/sentry.py
index 18f65892a2..a6e3b78d32 100644
--- a/src/backend/InvenTree/InvenTree/sentry.py
+++ b/src/backend/InvenTree/InvenTree/sentry.py
@@ -8,6 +8,7 @@ from django.http import Http404
import rest_framework.exceptions
import sentry_sdk
+from djmoney.contrib.exchange.exceptions import MissingRate
from sentry_sdk.integrations.django import DjangoIntegration
import InvenTree.version
@@ -27,6 +28,7 @@ def sentry_ignore_errors():
"""
return [
Http404,
+ MissingRate,
ValidationError,
rest_framework.exceptions.AuthenticationFailed,
rest_framework.exceptions.NotAuthenticated,
diff --git a/src/backend/InvenTree/InvenTree/serializers.py b/src/backend/InvenTree/InvenTree/serializers.py
index b50634d016..2a5f730620 100644
--- a/src/backend/InvenTree/InvenTree/serializers.py
+++ b/src/backend/InvenTree/InvenTree/serializers.py
@@ -89,7 +89,7 @@ class InvenTreeCurrencySerializer(serializers.ChoiceField):
)
if allow_blank:
- choices = [('', '---------')] + choices
+ choices = [('', '---------'), *choices]
kwargs['choices'] = choices
@@ -379,7 +379,7 @@ class InvenTreeTaggitSerializer(TaggitSerializer):
tag_object = super().update(instance, validated_data)
- for key in to_be_tagged.keys():
+ for key in to_be_tagged:
# re-add the tagmanager
new_tagobject = tag_object.__class__.objects.get(id=tag_object.id)
setattr(tag_object, key, getattr(new_tagobject, key))
@@ -390,8 +390,6 @@ class InvenTreeTaggitSerializer(TaggitSerializer):
class InvenTreeTagModelSerializer(InvenTreeTaggitSerializer, InvenTreeModelSerializer):
"""Combination of InvenTreeTaggitSerializer and InvenTreeModelSerializer."""
- pass
-
class UserSerializer(InvenTreeModelSerializer):
"""Serializer for a User."""
@@ -405,18 +403,21 @@ class UserSerializer(InvenTreeModelSerializer):
read_only_fields = ['username', 'email']
username = serializers.CharField(label=_('Username'), help_text=_('Username'))
+
first_name = serializers.CharField(
label=_('First Name'), help_text=_('First name of the user'), allow_blank=True
)
+
last_name = serializers.CharField(
label=_('Last Name'), help_text=_('Last name of the user'), allow_blank=True
)
+
email = serializers.EmailField(
label=_('Email'), help_text=_('Email address of the user'), allow_blank=True
)
-class ExendedUserSerializer(UserSerializer):
+class ExtendedUserSerializer(UserSerializer):
"""Serializer for a User with a bit more info."""
from users.serializers import GroupSerializer
@@ -426,21 +427,24 @@ class ExendedUserSerializer(UserSerializer):
class Meta(UserSerializer.Meta):
"""Metaclass defines serializer fields."""
- fields = UserSerializer.Meta.fields + [
+ fields = [
+ *UserSerializer.Meta.fields,
'groups',
'is_staff',
'is_superuser',
'is_active',
]
- read_only_fields = UserSerializer.Meta.read_only_fields + ['groups']
+ read_only_fields = [*UserSerializer.Meta.read_only_fields, 'groups']
is_staff = serializers.BooleanField(
label=_('Staff'), help_text=_('Does this user have staff permissions')
)
+
is_superuser = serializers.BooleanField(
label=_('Superuser'), help_text=_('Is this user a superuser')
)
+
is_active = serializers.BooleanField(
label=_('Active'), help_text=_('Is this user account active')
)
@@ -465,9 +469,33 @@ class ExendedUserSerializer(UserSerializer):
return super().validate(attrs)
-class UserCreateSerializer(ExendedUserSerializer):
+class MeUserSerializer(ExtendedUserSerializer):
+ """API serializer specifically for the 'me' endpoint."""
+
+ class Meta(ExtendedUserSerializer.Meta):
+ """Metaclass options.
+
+ Extends the ExtendedUserSerializer.Meta options,
+ but ensures that certain fields are read-only.
+ """
+
+ read_only_fields = [
+ *ExtendedUserSerializer.Meta.read_only_fields,
+ 'is_active',
+ 'is_staff',
+ 'is_superuser',
+ ]
+
+
+class UserCreateSerializer(ExtendedUserSerializer):
"""Serializer for creating a new User."""
+ class Meta(ExtendedUserSerializer.Meta):
+ """Metaclass options for the UserCreateSerializer."""
+
+ # Prevent creation of users with superuser or staff permissions
+ read_only_fields = ['groups', 'is_staff', 'is_superuser']
+
def validate(self, attrs):
"""Expanded valiadation for auth."""
# Check that the user trying to create a new user is a superuser
@@ -482,6 +510,7 @@ class UserCreateSerializer(ExendedUserSerializer):
def create(self, validated_data):
"""Send an e email to the user after creation."""
from InvenTree.helpers_model import get_base_url
+ from InvenTree.tasks import email_user, offload_task
base_url = get_base_url()
@@ -499,8 +528,12 @@ class UserCreateSerializer(ExendedUserSerializer):
if base_url:
message += f'\n\nURL: {base_url}'
+ subject = _('Welcome to InvenTree')
+
# Send the user an onboarding email (from current site)
- instance.email_user(subject=_('Welcome to InvenTree'), message=message)
+ offload_task(
+ email_user, instance.pk, str(subject), str(message), force_async=True
+ )
return instance
@@ -596,7 +629,7 @@ class DataFileUploadSerializer(serializers.Serializer):
accepted_file_types = ['xls', 'xlsx', 'csv', 'tsv', 'xml']
if ext not in accepted_file_types:
- raise serializers.ValidationError(_('Unsupported file type'))
+ raise serializers.ValidationError(_('Unsupported file format'))
# Impose a 50MB limit on uploaded BOM files
max_upload_file_size = 50 * 1024 * 1024
@@ -704,7 +737,6 @@ class DataFileUploadSerializer(serializers.Serializer):
def save(self):
"""Empty overwrite for save."""
- ...
class DataFileExtractSerializer(serializers.Serializer):
@@ -806,11 +838,10 @@ class DataFileExtractSerializer(serializers.Serializer):
required = field.get('required', False)
# Check for missing required columns
- if required:
- if name not in self.columns:
- raise serializers.ValidationError(
- _(f"Missing required column: '{name}'")
- )
+ if required and name not in self.columns:
+ raise serializers.ValidationError(
+ _(f"Missing required column: '{name}'")
+ )
for col in self.columns:
if not col:
@@ -824,7 +855,6 @@ class DataFileExtractSerializer(serializers.Serializer):
def save(self):
"""No "save" action for this serializer."""
- pass
class NotesFieldMixin:
@@ -882,8 +912,8 @@ class RemoteImageMixin(metaclass=serializers.SerializerMetaclass):
try:
self.remote_image_file = download_image_from_url(url)
- except Exception as exc:
+ except Exception:
self.remote_image_file = None
- raise ValidationError(str(exc))
+ raise ValidationError(_('Failed to download image from remote URL'))
return url
diff --git a/src/backend/InvenTree/InvenTree/settings.py b/src/backend/InvenTree/InvenTree/settings.py
index 8112ea0f19..e69094096c 100644
--- a/src/backend/InvenTree/InvenTree/settings.py
+++ b/src/backend/InvenTree/InvenTree/settings.py
@@ -32,7 +32,8 @@ from . import config, locales
checkMinPythonVersion()
-INVENTREE_NEWS_URL = 'https://inventree.org/news/feed.atom'
+INVENTREE_BASE_URL = 'https://inventree.org'
+INVENTREE_NEWS_URL = f'{INVENTREE_BASE_URL}/news/feed.atom'
# Determine if we are running in "test" mode e.g. "manage.py test"
TESTING = 'test' in sys.argv or 'TESTING' in os.environ
@@ -133,6 +134,34 @@ STATIC_URL = '/static/'
# Web URL endpoint for served media files
MEDIA_URL = '/media/'
+# Are plugins enabled?
+PLUGINS_ENABLED = get_boolean_setting(
+ 'INVENTREE_PLUGINS_ENABLED', 'plugins_enabled', False
+)
+
+PLUGINS_INSTALL_DISABLED = get_boolean_setting(
+ 'INVENTREE_PLUGIN_NOINSTALL', 'plugin_noinstall', False
+)
+
+PLUGIN_FILE = config.get_plugin_file()
+
+# Plugin test settings
+PLUGIN_TESTING = get_setting(
+ 'INVENTREE_PLUGIN_TESTING', 'PLUGIN_TESTING', TESTING
+) # Are plugins being tested?
+
+PLUGIN_TESTING_SETUP = get_setting(
+ 'INVENTREE_PLUGIN_TESTING_SETUP', 'PLUGIN_TESTING_SETUP', False
+) # Load plugins from setup hooks in testing?
+
+PLUGIN_TESTING_EVENTS = False # Flag if events are tested right now
+
+PLUGIN_RETRY = get_setting(
+ 'INVENTREE_PLUGIN_RETRY', 'PLUGIN_RETRY', 3, typecast=int
+) # How often should plugin loading be tried?
+
+PLUGIN_FILE_CHECKED = False # Was the plugin file checked?
+
STATICFILES_DIRS = []
# Translated Template settings
@@ -153,6 +182,12 @@ if DEBUG and 'collectstatic' not in sys.argv:
if web_dir.exists():
STATICFILES_DIRS.append(web_dir)
+ # Append directory for sample plugin static content (if in debug mode)
+ if PLUGINS_ENABLED:
+ print('Adding plugin sample static content')
+ STATICFILES_DIRS.append(BASE_DIR.joinpath('plugin', 'samples', 'static'))
+
+ print('-', STATICFILES_DIRS[-1])
STATFILES_I18_PROCESSORS = ['InvenTree.context.status_codes']
# Color Themes Directory
@@ -169,10 +204,11 @@ DBBACKUP_STORAGE = get_setting(
# Default backup configuration
DBBACKUP_STORAGE_OPTIONS = get_setting(
- 'INVENTREE_BACKUP_OPTIONS', 'backup_options', None
+ 'INVENTREE_BACKUP_OPTIONS',
+ 'backup_options',
+ default_value={'location': config.get_backup_dir()},
+ typecast=dict,
)
-if DBBACKUP_STORAGE_OPTIONS is None:
- DBBACKUP_STORAGE_OPTIONS = {'location': config.get_backup_dir()}
INVENTREE_ADMIN_ENABLED = get_boolean_setting(
'INVENTREE_ADMIN_ENABLED', config_key='admin_enabled', default_value=True
@@ -281,7 +317,7 @@ QUERYCOUNT = {
'MIN_TIME_TO_LOG': 0.1,
'MIN_QUERY_COUNT_TO_LOG': 25,
},
- 'IGNORE_REQUEST_PATTERNS': ['^(?!\/(api)?(plugin)?\/).*'],
+ 'IGNORE_REQUEST_PATTERNS': [r'^(?!\/(api)?(plugin)?\/).*'],
'IGNORE_SQL_PATTERNS': [],
'DISPLAY_DUPLICATES': 1,
'RESPONSE_HEADER': 'X-Django-Query-Count',
@@ -298,7 +334,7 @@ if (
and INVENTREE_ADMIN_ENABLED
and not TESTING
and get_boolean_setting('INVENTREE_DEBUG_SHELL', 'debug_shell', False)
-): # noqa
+):
try:
import django_admin_shell # noqa: F401
@@ -555,6 +591,9 @@ for key in db_keys:
# Check that required database configuration options are specified
required_keys = ['ENGINE', 'NAME']
+# Ensure all database keys are upper case
+db_config = {key.upper(): value for key, value in db_config.items()}
+
for key in required_keys:
if key not in db_config: # pragma: no cover
error_msg = f'Missing required database configuration value {key}'
@@ -812,13 +851,20 @@ _q_worker_timeout = int(
get_setting('INVENTREE_BACKGROUND_TIMEOUT', 'background.timeout', 90)
)
+
+# Prevent running multiple background workers if global cache is disabled
+# This is to prevent scheduling conflicts due to the lack of a shared cache
+BACKGROUND_WORKER_COUNT = (
+ int(get_setting('INVENTREE_BACKGROUND_WORKERS', 'background.workers', 4))
+ if GLOBAL_CACHE_ENABLED
+ else 1
+)
+
# django-q background worker configuration
Q_CLUSTER = {
'name': 'InvenTree',
'label': 'Background Tasks',
- 'workers': int(
- get_setting('INVENTREE_BACKGROUND_WORKERS', 'background.workers', 4)
- ),
+ 'workers': BACKGROUND_WORKER_COUNT,
'timeout': _q_worker_timeout,
'retry': max(120, _q_worker_timeout + 30),
'max_attempts': int(
@@ -949,10 +995,7 @@ USE_I18N = True
# Do not use native timezone support in "test" mode
# It generates a *lot* of cruft in the logs
-if not TESTING:
- USE_TZ = True # pragma: no cover
-else:
- USE_TZ = False
+USE_TZ = bool(not TESTING)
DATE_INPUT_FORMATS = ['%Y-%m-%d']
@@ -1058,26 +1101,40 @@ if (
sys.exit(-1)
COOKIE_MODE = (
- str(get_setting('INVENTREE_COOKIE_SAMESITE', 'cookie.samesite', 'None'))
+ str(get_setting('INVENTREE_COOKIE_SAMESITE', 'cookie.samesite', 'False'))
.lower()
.strip()
)
-valid_cookie_modes = {'lax': 'Lax', 'strict': 'Strict', 'none': None, 'null': None}
+# Valid modes (as per the django settings documentation)
+valid_cookie_modes = ['lax', 'strict', 'none']
-if COOKIE_MODE not in valid_cookie_modes.keys():
- logger.error('Invalid cookie samesite mode: %s', COOKIE_MODE)
- sys.exit(-1)
-
-COOKIE_MODE = valid_cookie_modes[COOKIE_MODE.lower()]
+if not DEBUG and not TESTING and COOKIE_MODE in valid_cookie_modes:
+ # Set the cookie mode (in production mode only)
+ COOKIE_MODE = COOKIE_MODE.capitalize()
+else:
+ # Default to False, as per the Django settings
+ COOKIE_MODE = False
# Additional CSRF settings
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_COOKIE_NAME = 'csrftoken'
+
CSRF_COOKIE_SAMESITE = COOKIE_MODE
SESSION_COOKIE_SAMESITE = COOKIE_MODE
-SESSION_COOKIE_SECURE = get_boolean_setting(
- 'INVENTREE_SESSION_COOKIE_SECURE', 'cookie.secure', False
+
+"""Set the SESSION_COOKIE_SECURE value based on the following rules:
+- False if the server is running in DEBUG mode
+- True if samesite cookie setting is set to 'None'
+- Otherwise, use the value specified in the configuration file (or env var)
+"""
+SESSION_COOKIE_SECURE = (
+ False
+ if DEBUG
+ else (
+ SESSION_COOKIE_SAMESITE == 'None'
+ or get_boolean_setting('INVENTREE_SESSION_COOKIE_SECURE', 'cookie.secure', True)
+ )
)
USE_X_FORWARDED_HOST = get_boolean_setting(
@@ -1229,23 +1286,29 @@ MARKDOWNIFY = {
'abbr',
'b',
'blockquote',
+ 'code',
'em',
'h1',
'h2',
'h3',
+ 'h4',
+ 'h5',
+ 'hr',
'i',
'img',
'li',
'ol',
'p',
+ 'pre',
+ 's',
'strong',
- 'ul',
'table',
'thead',
'tbody',
'th',
'tr',
'td',
+ 'ul',
],
}
}
@@ -1257,32 +1320,12 @@ IGNORED_ERRORS = [Http404, django.core.exceptions.PermissionDenied]
MAINTENANCE_MODE_RETRY_AFTER = 10
MAINTENANCE_MODE_STATE_BACKEND = 'InvenTree.backends.InvenTreeMaintenanceModeBackend'
-# Are plugins enabled?
-PLUGINS_ENABLED = get_boolean_setting(
- 'INVENTREE_PLUGINS_ENABLED', 'plugins_enabled', False
-)
-PLUGINS_INSTALL_DISABLED = get_boolean_setting(
- 'INVENTREE_PLUGIN_NOINSTALL', 'plugin_noinstall', False
-)
-
-PLUGIN_FILE = config.get_plugin_file()
-
-# Plugin test settings
-PLUGIN_TESTING = get_setting(
- 'INVENTREE_PLUGIN_TESTING', 'PLUGIN_TESTING', TESTING
-) # Are plugins being tested?
-PLUGIN_TESTING_SETUP = get_setting(
- 'INVENTREE_PLUGIN_TESTING_SETUP', 'PLUGIN_TESTING_SETUP', False
-) # Load plugins from setup hooks in testing?
-PLUGIN_TESTING_EVENTS = False # Flag if events are tested right now
-PLUGIN_RETRY = get_setting(
- 'INVENTREE_PLUGIN_RETRY', 'PLUGIN_RETRY', 3, typecast=int
-) # How often should plugin loading be tried?
-PLUGIN_FILE_CHECKED = False # Was the plugin file checked?
-
# Flag to allow table events during testing
TESTING_TABLE_EVENTS = False
+# Flag to allow pricing recalculations during testing
+TESTING_PRICING = False
+
# User interface customization values
CUSTOM_LOGO = get_custom_file(
'INVENTREE_CUSTOM_LOGO', 'customize.logo', 'custom logo', lookup_media=True
diff --git a/src/backend/InvenTree/InvenTree/social_auth_urls.py b/src/backend/InvenTree/InvenTree/social_auth_urls.py
index 9702750b49..4be0b8d09f 100644
--- a/src/backend/InvenTree/InvenTree/social_auth_urls.py
+++ b/src/backend/InvenTree/InvenTree/social_auth_urls.py
@@ -94,20 +94,19 @@ for name, provider in providers.registry.provider_map.items():
urls = []
if len(adapters) == 1:
urls = handle_oauth2(adapter=adapters[0])
+ elif provider.id in legacy:
+ logger.warning(
+ '`%s` is not supported on platform UI. Use `%s` instead.',
+ provider.id,
+ legacy[provider.id],
+ )
+ continue
else:
- if provider.id in legacy:
- logger.warning(
- '`%s` is not supported on platform UI. Use `%s` instead.',
- provider.id,
- legacy[provider.id],
- )
- continue
- 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
+ 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))]
diff --git a/src/backend/InvenTree/InvenTree/static/script/purify.min.js b/src/backend/InvenTree/InvenTree/static/script/purify.min.js
new file mode 100644
index 0000000000..9b01c0d177
--- /dev/null
+++ b/src/backend/InvenTree/InvenTree/static/script/purify.min.js
@@ -0,0 +1,3 @@
+/*! @license DOMPurify 3.1.7 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.7/LICENSE */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,(function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:r}=Object;let{freeze:i,seal:a,create:l}=Object,{apply:c,construct:s}="undefined"!=typeof Reflect&&Reflect;i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t,n){return e.apply(t,n)}),s||(s=function(e,t){return new e(...t)});const u=b(Array.prototype.forEach),m=b(Array.prototype.pop),p=b(Array.prototype.push),f=b(String.prototype.toLowerCase),d=b(String.prototype.toString),h=b(String.prototype.match),g=b(String.prototype.replace),T=b(String.prototype.indexOf),y=b(String.prototype.trim),E=b(Object.prototype.hasOwnProperty),_=b(RegExp.prototype.test),A=(N=TypeError,function(){for(var e=arguments.length,t=new Array(e),n=0;n1?n-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:f;t&&t(e,null);let i=o.length;for(;i--;){let t=o[i];if("string"==typeof t){const e=r(t);e!==t&&(n(o)||(o[i]=e),t=e)}e[t]=!0}return e}function R(e){for(let t=0;t/gm),B=a(/\${[\w\W]*}/gm),W=a(/^data-[\-\w.\u00B7-\uFFFF]/),G=a(/^aria-[\-\w]+$/),Y=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),j=a(/^(?:\w+script|data):/i),X=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),q=a(/^html$/i),$=a(/^[a-z][.\w]*(-[.\w]+)+$/i);var K=Object.freeze({__proto__:null,MUSTACHE_EXPR:H,ERB_EXPR:z,TMPLIT_EXPR:B,DATA_ATTR:W,ARIA_ATTR:G,IS_ALLOWED_URI:Y,IS_SCRIPT_OR_DATA:j,ATTR_WHITESPACE:X,DOCTYPE_NAME:q,CUSTOM_ELEMENT:$});const V=1,Z=3,J=7,Q=8,ee=9,te=function(){return"undefined"==typeof window?null:window};var ne=function t(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:te();const o=e=>t(e);if(o.version="3.1.7",o.removed=[],!n||!n.document||n.document.nodeType!==ee)return o.isSupported=!1,o;let{document:r}=n;const a=r,c=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:N,Node:b,Element:R,NodeFilter:H,NamedNodeMap:z=n.NamedNodeMap||n.MozNamedAttrMap,HTMLFormElement:B,DOMParser:W,trustedTypes:G}=n,j=R.prototype,X=C(j,"cloneNode"),$=C(j,"remove"),ne=C(j,"nextSibling"),oe=C(j,"childNodes"),re=C(j,"parentNode");if("function"==typeof N){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let ie,ae="";const{implementation:le,createNodeIterator:ce,createDocumentFragment:se,getElementsByTagName:ue}=r,{importNode:me}=a;let pe={};o.isSupported="function"==typeof e&&"function"==typeof re&&le&&void 0!==le.createHTMLDocument;const{MUSTACHE_EXPR:fe,ERB_EXPR:de,TMPLIT_EXPR:he,DATA_ATTR:ge,ARIA_ATTR:Te,IS_SCRIPT_OR_DATA:ye,ATTR_WHITESPACE:Ee,CUSTOM_ELEMENT:_e}=K;let{IS_ALLOWED_URI:Ae}=K,Ne=null;const be=S({},[...L,...v,...D,...x,...M]);let Se=null;const Re=S({},[...I,...U,...P,...F]);let we=Object.seal(l(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ce=null,Le=null,ve=!0,De=!0,Oe=!1,xe=!0,ke=!1,Me=!0,Ie=!1,Ue=!1,Pe=!1,Fe=!1,He=!1,ze=!1,Be=!0,We=!1,Ge=!0,Ye=!1,je={},Xe=null;const qe=S({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let $e=null;const Ke=S({},["audio","video","img","source","image","track"]);let Ve=null;const Ze=S({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Je="http://www.w3.org/1998/Math/MathML",Qe="http://www.w3.org/2000/svg",et="http://www.w3.org/1999/xhtml";let tt=et,nt=!1,ot=null;const rt=S({},[Je,Qe,et],d);let it=null;const at=["application/xhtml+xml","text/html"];let lt=null,ct=null;const st=r.createElement("form"),ut=function(e){return e instanceof RegExp||e instanceof Function},mt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ct||ct!==e){if(e&&"object"==typeof e||(e={}),e=w(e),it=-1===at.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,lt="application/xhtml+xml"===it?d:f,Ne=E(e,"ALLOWED_TAGS")?S({},e.ALLOWED_TAGS,lt):be,Se=E(e,"ALLOWED_ATTR")?S({},e.ALLOWED_ATTR,lt):Re,ot=E(e,"ALLOWED_NAMESPACES")?S({},e.ALLOWED_NAMESPACES,d):rt,Ve=E(e,"ADD_URI_SAFE_ATTR")?S(w(Ze),e.ADD_URI_SAFE_ATTR,lt):Ze,$e=E(e,"ADD_DATA_URI_TAGS")?S(w(Ke),e.ADD_DATA_URI_TAGS,lt):Ke,Xe=E(e,"FORBID_CONTENTS")?S({},e.FORBID_CONTENTS,lt):qe,Ce=E(e,"FORBID_TAGS")?S({},e.FORBID_TAGS,lt):{},Le=E(e,"FORBID_ATTR")?S({},e.FORBID_ATTR,lt):{},je=!!E(e,"USE_PROFILES")&&e.USE_PROFILES,ve=!1!==e.ALLOW_ARIA_ATTR,De=!1!==e.ALLOW_DATA_ATTR,Oe=e.ALLOW_UNKNOWN_PROTOCOLS||!1,xe=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,ke=e.SAFE_FOR_TEMPLATES||!1,Me=!1!==e.SAFE_FOR_XML,Ie=e.WHOLE_DOCUMENT||!1,Fe=e.RETURN_DOM||!1,He=e.RETURN_DOM_FRAGMENT||!1,ze=e.RETURN_TRUSTED_TYPE||!1,Pe=e.FORCE_BODY||!1,Be=!1!==e.SANITIZE_DOM,We=e.SANITIZE_NAMED_PROPS||!1,Ge=!1!==e.KEEP_CONTENT,Ye=e.IN_PLACE||!1,Ae=e.ALLOWED_URI_REGEXP||Y,tt=e.NAMESPACE||et,we=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(we.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&ut(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(we.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(we.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ke&&(De=!1),He&&(Fe=!0),je&&(Ne=S({},M),Se=[],!0===je.html&&(S(Ne,L),S(Se,I)),!0===je.svg&&(S(Ne,v),S(Se,U),S(Se,F)),!0===je.svgFilters&&(S(Ne,D),S(Se,U),S(Se,F)),!0===je.mathMl&&(S(Ne,x),S(Se,P),S(Se,F))),e.ADD_TAGS&&(Ne===be&&(Ne=w(Ne)),S(Ne,e.ADD_TAGS,lt)),e.ADD_ATTR&&(Se===Re&&(Se=w(Se)),S(Se,e.ADD_ATTR,lt)),e.ADD_URI_SAFE_ATTR&&S(Ve,e.ADD_URI_SAFE_ATTR,lt),e.FORBID_CONTENTS&&(Xe===qe&&(Xe=w(Xe)),S(Xe,e.FORBID_CONTENTS,lt)),Ge&&(Ne["#text"]=!0),Ie&&S(Ne,["html","head","body"]),Ne.table&&(S(Ne,["tbody"]),delete Ce.tbody),e.TRUSTED_TYPES_POLICY){if("function"!=typeof e.TRUSTED_TYPES_POLICY.createHTML)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw A('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');ie=e.TRUSTED_TYPES_POLICY,ae=ie.createHTML("")}else void 0===ie&&(ie=function(e,t){if("object"!=typeof e||"function"!=typeof e.createPolicy)return null;let n=null;const o="data-tt-policy-suffix";t&&t.hasAttribute(o)&&(n=t.getAttribute(o));const r="dompurify"+(n?"#"+n:"");try{return e.createPolicy(r,{createHTML:e=>e,createScriptURL:e=>e})}catch(e){return console.warn("TrustedTypes policy "+r+" could not be created."),null}}(G,c)),null!==ie&&"string"==typeof ae&&(ae=ie.createHTML(""));i&&i(e),ct=e}},pt=S({},["mi","mo","mn","ms","mtext"]),ft=S({},["annotation-xml"]),dt=S({},["title","style","font","a","script"]),ht=S({},[...v,...D,...O]),gt=S({},[...x,...k]),Tt=function(e){p(o.removed,{element:e});try{re(e).removeChild(e)}catch(t){$(e)}},yt=function(e,t){try{p(o.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){p(o.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Se[e])if(Fe||He)try{Tt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},Et=function(e){let t=null,n=null;if(Pe)e=" "+e;else{const t=h(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===it&&tt===et&&(e=''+e+"");const o=ie?ie.createHTML(e):e;if(tt===et)try{t=(new W).parseFromString(o,it)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(tt,"template",null);try{t.documentElement.innerHTML=nt?ae:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),tt===et?ue.call(t,Ie?"html":"body")[0]:Ie?t.documentElement:i},_t=function(e){return ce.call(e.ownerDocument||e,e,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},At=function(e){return e instanceof B&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof z)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Nt=function(e){return"function"==typeof b&&e instanceof b},bt=function(e,t,n){pe[e]&&u(pe[e],(e=>{e.call(o,t,n,ct)}))},St=function(e){let t=null;if(bt("beforeSanitizeElements",e,null),At(e))return Tt(e),!0;const n=lt(e.nodeName);if(bt("uponSanitizeElement",e,{tagName:n,allowedTags:Ne}),e.hasChildNodes()&&!Nt(e.firstElementChild)&&_(/<[/\w]/g,e.innerHTML)&&_(/<[/\w]/g,e.textContent))return Tt(e),!0;if(e.nodeType===J)return Tt(e),!0;if(Me&&e.nodeType===Q&&_(/<[/\w]/g,e.data))return Tt(e),!0;if(!Ne[n]||Ce[n]){if(!Ce[n]&&wt(n)){if(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n))return!1;if(we.tagNameCheck instanceof Function&&we.tagNameCheck(n))return!1}if(Ge&&!Xe[n]){const t=re(e)||e.parentNode,n=oe(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=X(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,ne(e))}}}return Tt(e),!0}return e instanceof R&&!function(e){let t=re(e);t&&t.tagName||(t={namespaceURI:tt,tagName:"template"});const n=f(e.tagName),o=f(t.tagName);return!!ot[e.namespaceURI]&&(e.namespaceURI===Qe?t.namespaceURI===et?"svg"===n:t.namespaceURI===Je?"svg"===n&&("annotation-xml"===o||pt[o]):Boolean(ht[n]):e.namespaceURI===Je?t.namespaceURI===et?"math"===n:t.namespaceURI===Qe?"math"===n&&ft[o]:Boolean(gt[n]):e.namespaceURI===et?!(t.namespaceURI===Qe&&!ft[o])&&!(t.namespaceURI===Je&&!pt[o])&&!gt[n]&&(dt[n]||!ht[n]):!("application/xhtml+xml"!==it||!ot[e.namespaceURI]))}(e)?(Tt(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!_(/<\/no(script|embed|frames)/i,e.innerHTML)?(ke&&e.nodeType===Z&&(t=e.textContent,u([fe,de,he],(e=>{t=g(t,e," ")})),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),bt("afterSanitizeElements",e,null),!1):(Tt(e),!0)},Rt=function(e,t,n){if(Be&&("id"===t||"name"===t)&&(n in r||n in st))return!1;if(De&&!Le[t]&&_(ge,t));else if(ve&&_(Te,t));else if(!Se[t]||Le[t]){if(!(wt(e)&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,e)||we.tagNameCheck instanceof Function&&we.tagNameCheck(e))&&(we.attributeNameCheck instanceof RegExp&&_(we.attributeNameCheck,t)||we.attributeNameCheck instanceof Function&&we.attributeNameCheck(t))||"is"===t&&we.allowCustomizedBuiltInElements&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n)||we.tagNameCheck instanceof Function&&we.tagNameCheck(n))))return!1}else if(Ve[t]);else if(_(Ae,g(n,Ee,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==T(n,"data:")||!$e[e]){if(Oe&&!_(ye,g(n,Ee,"")));else if(n)return!1}else;return!0},wt=function(e){return"annotation-xml"!==e&&h(e,_e)},Ct=function(e){bt("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=lt(a);let p="value"===a?c:y(c);if(n.attrName=s,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,bt("uponSanitizeAttribute",e,n),p=n.attrValue,n.forceKeepAttr)continue;if(yt(a,e),!n.keepAttr)continue;if(!xe&&_(/\/>/i,p)){yt(a,e);continue}ke&&u([fe,de,he],(e=>{p=g(p,e," ")}));const f=lt(e.nodeName);if(Rt(f,s,p))if(!We||"id"!==s&&"name"!==s||(yt(a,e),p="user-content-"+p),Me&&_(/((--!?|])>)|<\/(style|title)/i,p))yt(a,e);else{if(ie&&"object"==typeof G&&"function"==typeof G.getAttributeType)if(l);else switch(G.getAttributeType(f,s)){case"TrustedHTML":p=ie.createHTML(p);break;case"TrustedScriptURL":p=ie.createScriptURL(p)}try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),At(e)?Tt(e):m(o.removed)}catch(e){}}}bt("afterSanitizeAttributes",e,null)},Lt=function e(t){let n=null;const o=_t(t);for(bt("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)bt("uponSanitizeShadowNode",n,null),St(n)||(n.content instanceof s&&e(n.content),Ct(n));bt("afterSanitizeShadowDOM",t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(nt=!e,nt&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Nt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ue||mt(t),o.removed=[],"string"==typeof e&&(Ye=!1),Ye){if(e.nodeName){const t=lt(e.nodeName);if(!Ne[t]||Ce[t])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof b)n=Et("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===V&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!ke&&!Ie&&-1===e.indexOf("<"))return ie&&ze?ie.createHTML(e):e;if(n=Et(e),!n)return Fe?null:ze?ae:""}n&&Pe&&Tt(n.firstChild);const c=_t(Ye?e:n);for(;i=c.nextNode();)St(i)||(i.content instanceof s&&Lt(i.content),Ct(i));if(Ye)return e;if(Fe){if(He)for(l=se.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Se.shadowroot||Se.shadowrootmode)&&(l=me.call(a,l,!0)),l}let m=Ie?n.outerHTML:n.innerHTML;return Ie&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&_(q,n.ownerDocument.doctype.name)&&(m="\n"+m),ke&&u([fe,de,he],(e=>{m=g(m,e," ")})),ie&&ze?ie.createHTML(m):m},o.setConfig=function(){mt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Ue=!0},o.clearConfig=function(){ct=null,Ue=!1},o.isValidAttribute=function(e,t,n){ct||mt({});const o=lt(e),r=lt(t);return Rt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],p(pe[e],t))},o.removeHook=function(e){if(pe[e])return m(pe[e])},o.removeHooks=function(e){pe[e]&&(pe[e]=[])},o.removeAllHooks=function(){pe={}},o}();return ne}));
+//# sourceMappingURL=purify.min.js.map
\ No newline at end of file
diff --git a/src/backend/InvenTree/InvenTree/status.py b/src/backend/InvenTree/InvenTree/status.py
index cd6d357928..500dfcd1ae 100644
--- a/src/backend/InvenTree/InvenTree/status.py
+++ b/src/backend/InvenTree/InvenTree/status.py
@@ -1,16 +1,14 @@
"""Provides system status functionality checks."""
-# -*- coding: utf-8 -*-
import logging
from datetime import timedelta
from django.utils import timezone
-from django.utils.translation import gettext_lazy as _
from django_q.models import Success
from django_q.status import Stat
-import InvenTree.email
+import InvenTree.helpers_email
import InvenTree.ready
logger = logging.getLogger('inventree')
@@ -63,13 +61,13 @@ def check_system_health(**kwargs):
if not is_worker_running(**kwargs): # pragma: no cover
result = False
- logger.warning(_('Background worker check failed'))
+ logger.warning('Background worker check failed')
- if not InvenTree.email.is_email_configured(): # pragma: no cover
+ if not InvenTree.helpers_email.is_email_configured(): # pragma: no cover
result = False
- logger.warning(_('Email backend not configured'))
+ logger.warning('Email backend not configured')
if not result: # pragma: no cover
- logger.warning(_('InvenTree system health checks failed'))
+ logger.warning('InvenTree system health checks failed')
return result
diff --git a/src/backend/InvenTree/InvenTree/tasks.py b/src/backend/InvenTree/InvenTree/tasks.py
index 21195c9c75..37f8cb2747 100644
--- a/src/backend/InvenTree/InvenTree/tasks.py
+++ b/src/backend/InvenTree/InvenTree/tasks.py
@@ -9,9 +9,10 @@ import time
import warnings
from dataclasses import dataclass
from datetime import datetime, timedelta
-from typing import Callable
+from typing import Callable, Optional
from django.conf import settings
+from django.contrib.auth import get_user_model
from django.core.exceptions import AppRegistryNotReady
from django.core.management import call_command
from django.db import DEFAULT_DB_ALIAS, connections
@@ -174,6 +175,9 @@ def offload_task(
"""
from InvenTree.exceptions import log_error
+ # Extract group information from kwargs
+ group = kwargs.pop('group', 'inventree')
+
try:
import importlib
@@ -200,13 +204,13 @@ def offload_task(
if force_async or (is_worker_running() and not force_sync):
# Running as asynchronous task
try:
- task = AsyncTask(taskname, *args, **kwargs)
+ task = AsyncTask(taskname, *args, group=group, **kwargs)
task.run()
except ImportError:
raise_warning(f"WARNING: '{taskname}' not offloaded - Function not found")
return False
except Exception as exc:
- raise_warning(f"WARNING: '{taskname}' not offloaded due to {str(exc)}")
+ raise_warning(f"WARNING: '{taskname}' not offloaded due to {exc!s}")
log_error('InvenTree.offload_task')
return False
else:
@@ -256,7 +260,7 @@ def offload_task(
_func(*args, **kwargs)
except Exception as exc:
log_error('InvenTree.offload_task')
- raise_warning(f"WARNING: '{taskname}' failed due to {str(exc)}")
+ raise_warning(f"WARNING: '{taskname}' failed due to {exc!s}")
raise exc
# Finally, task either completed successfully or was offloaded
@@ -291,7 +295,7 @@ class TaskRegister:
task_list: list[ScheduledTask] = []
- def register(self, task, schedule, minutes: int = None):
+ def register(self, task, schedule, minutes: Optional[int] = None):
"""Register a task with the que."""
self.task_list.append(ScheduledTask(task, schedule, minutes))
@@ -299,7 +303,9 @@ class TaskRegister:
tasks = TaskRegister()
-def scheduled_task(interval: str, minutes: int = None, tasklist: TaskRegister = None):
+def scheduled_task(
+ interval: str, minutes: Optional[int] = None, tasklist: TaskRegister = None
+):
"""Register the given task as a scheduled task.
Example:
@@ -688,3 +694,14 @@ def check_for_migrations(force: bool = False, reload_registry: bool = True):
# We should be current now - triggering full reload to make sure all models
# are loaded fully in their new state.
registry.reload_plugins(full_reload=True, force_reload=True, collect=True)
+
+
+def email_user(user_id: int, subject: str, message: str) -> None:
+ """Send a message to a user."""
+ try:
+ user = get_user_model().objects.get(pk=user_id)
+ except Exception:
+ logger.warning('User <%s> not found - cannot send welcome message', user_id)
+ return
+
+ user.email_user(subject=subject, message=message)
diff --git a/src/backend/InvenTree/InvenTree/templatetags/i18n.py b/src/backend/InvenTree/InvenTree/templatetags/i18n.py
index a6b66eb9c6..cc85d19e6c 100644
--- a/src/backend/InvenTree/InvenTree/templatetags/i18n.py
+++ b/src/backend/InvenTree/InvenTree/templatetags/i18n.py
@@ -80,7 +80,7 @@ def do_translate(parser, token):
"""
bits = token.split_contents()
if len(bits) < 2:
- raise TemplateSyntaxError("'%s' takes at least one argument" % bits[0])
+ raise TemplateSyntaxError(f"'{bits[0]}' takes at least one argument")
message_string = parser.compile_filter(bits[1])
remaining = bits[2:]
@@ -95,7 +95,7 @@ def do_translate(parser, token):
option = remaining.pop(0)
if option in seen:
raise TemplateSyntaxError(
- "The '%s' option was specified more than once." % option
+ f"The '{option}' option was specified more than once."
)
elif option == 'noop':
noop = True
@@ -104,13 +104,12 @@ def do_translate(parser, token):
value = remaining.pop(0)
except IndexError:
raise TemplateSyntaxError(
- "No argument provided to the '%s' tag for the context option."
- % bits[0]
+ f"No argument provided to the '{bits[0]}' tag for the context option."
)
if value in invalid_context:
raise TemplateSyntaxError(
- "Invalid argument '%s' provided to the '%s' tag for the context "
- 'option' % (value, bits[0])
+ f"Invalid argument '{value}' provided to the '{bits[0]}' tag for the context "
+ 'option'
)
message_context = parser.compile_filter(value)
elif option == 'as':
@@ -118,16 +117,15 @@ def do_translate(parser, token):
value = remaining.pop(0)
except IndexError:
raise TemplateSyntaxError(
- "No argument provided to the '%s' tag for the as option." % bits[0]
+ f"No argument provided to the '{bits[0]}' tag for the as option."
)
asvar = value
elif option == 'escape':
escape = True
else:
raise TemplateSyntaxError(
- "Unknown argument for '%s' tag: '%s'. The only options "
+ f"Unknown argument for '{bits[0]}' tag: '{option}'. The only options "
"available are 'noop', 'context' \"xxx\", and 'as VAR'."
- % (bits[0], option)
)
seen.add(option)
diff --git a/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py b/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py
index ad476ba671..cbe8f0463c 100644
--- a/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py
+++ b/src/backend/InvenTree/InvenTree/templatetags/inventree_extras.py
@@ -410,10 +410,7 @@ def progress_bar(val, max_val, *args, **kwargs):
else:
style = ''
- if max_val != 0:
- percent = float(val / max_val) * 100
- else:
- percent = 0
+ percent = float(val / max_val) * 100 if max_val != 0 else 0
if percent > 100:
percent = 100
@@ -422,7 +419,7 @@ def progress_bar(val, max_val, *args, **kwargs):
style_tags = []
- max_width = kwargs.get('max_width', None)
+ max_width = kwargs.get('max_width')
if max_width:
style_tags.append(f'max-width: {max_width};')
@@ -498,7 +495,7 @@ def primitive_to_javascript(primitive):
elif type(primitive) in [int, float]:
return primitive
# Wrap with quotes
- return format_html("'{}'", primitive) # noqa: P103
+ return format_html("'{}'", primitive)
@register.simple_tag()
diff --git a/src/backend/InvenTree/InvenTree/test_api.py b/src/backend/InvenTree/InvenTree/test_api.py
index 0ec1f169f2..5081dc07b4 100644
--- a/src/backend/InvenTree/InvenTree/test_api.py
+++ b/src/backend/InvenTree/InvenTree/test_api.py
@@ -70,11 +70,11 @@ class APITests(InvenTreeAPITestCase):
"""Helper function to use basic auth."""
# Use basic authentication
- authstring = bytes('{u}:{p}'.format(u=self.username, p=self.password), 'ascii')
+ authstring = bytes(f'{self.username}:{self.password}', 'ascii')
# Use "basic" auth by default
auth = b64encode(authstring).decode('ascii')
- self.client.credentials(HTTP_AUTHORIZATION='Basic {auth}'.format(auth=auth))
+ self.client.credentials(HTTP_AUTHORIZATION=f'Basic {auth}')
def tokenAuth(self):
"""Helper function to use token auth."""
diff --git a/src/backend/InvenTree/InvenTree/test_tasks.py b/src/backend/InvenTree/InvenTree/test_tasks.py
index 2cb1ae6f51..03e4d6ee0e 100644
--- a/src/backend/InvenTree/InvenTree/test_tasks.py
+++ b/src/backend/InvenTree/InvenTree/test_tasks.py
@@ -4,12 +4,13 @@ import os
from datetime import timedelta
from django.conf import settings
+from django.contrib.auth.models import User
from django.core.management import call_command
from django.db.utils import NotSupportedError
from django.test import TestCase
from django.utils import timezone
-from django_q.models import Schedule
+from django_q.models import Schedule, Task
from error_report.models import Error
import InvenTree.tasks
@@ -163,3 +164,39 @@ class InvenTreeTaskTests(TestCase):
migration_path.unlink()
except IndexError: # pragma: no cover
pass
+
+ def test_failed_task_notification(self):
+ """Test that a failed task will generate a notification."""
+ from common.models import NotificationEntry, NotificationMessage
+
+ # Create a staff user (to ensure notifications are sent)
+ User.objects.create_user(username='staff', password='staffpass', is_staff=True)
+
+ n_tasks = Task.objects.count()
+ n_entries = NotificationEntry.objects.count()
+ n_messages = NotificationMessage.objects.count()
+
+ # Create a 'failed' task in the database
+ # Note: The 'attempt count' is set to 10 to ensure that the task is properly marked as 'failed'
+ Task.objects.create(
+ id=n_tasks + 1,
+ name='failed_task',
+ func='InvenTree.tasks.failed_task',
+ group='test',
+ success=False,
+ started=timezone.now(),
+ stopped=timezone.now(),
+ attempt_count=10,
+ )
+
+ # A new notification entry should be created
+ self.assertEqual(NotificationEntry.objects.count(), n_entries + 1)
+ self.assertEqual(NotificationMessage.objects.count(), n_messages + 1)
+
+ msg = NotificationMessage.objects.last()
+
+ self.assertEqual(msg.name, 'Task Failure')
+ self.assertEqual(
+ msg.message,
+ "Background worker task 'InvenTree.tasks.failed_task' failed after 10 attempts",
+ )
diff --git a/src/backend/InvenTree/InvenTree/test_urls.py b/src/backend/InvenTree/InvenTree/test_urls.py
index 42744e0a16..8c9dea4ab9 100644
--- a/src/backend/InvenTree/InvenTree/test_urls.py
+++ b/src/backend/InvenTree/InvenTree/test_urls.py
@@ -70,7 +70,7 @@ class URLTest(TestCase):
pattern = '{% url [\'"]([^\'"]+)[\'"]([^%]*)%}'
- with open(input_file, 'r') as f:
+ with open(input_file, encoding='utf-8') as f:
data = f.read()
results = re.findall(pattern, data)
diff --git a/src/backend/InvenTree/InvenTree/tests.py b/src/backend/InvenTree/InvenTree/tests.py
index 5f2093a8fe..0672e4699d 100644
--- a/src/backend/InvenTree/InvenTree/tests.py
+++ b/src/backend/InvenTree/InvenTree/tests.py
@@ -543,22 +543,22 @@ class FormatTest(TestCase):
def test_currency_formatting(self):
"""Test that currency formatting works correctly for multiple currencies."""
test_data = (
- (Money(3651.285718, 'USD'), 4, True, '$3,651.2857'), # noqa: E201,E202
- (Money(487587.849178, 'CAD'), 5, True, 'CA$487,587.84918'), # noqa: E201,E202
- (Money(0.348102, 'EUR'), 1, False, '0.3'), # noqa: E201,E202
- (Money(0.916530, 'GBP'), 1, True, '£0.9'), # noqa: E201,E202
- (Money(61.031024, 'JPY'), 3, False, '61.031'), # noqa: E201,E202
- (Money(49609.694602, 'JPY'), 1, True, '¥49,609.7'), # noqa: E201,E202
- (Money(155565.264777, 'AUD'), 2, False, '155,565.26'), # noqa: E201,E202
- (Money(0.820437, 'CNY'), 4, True, 'CN¥0.8204'), # noqa: E201,E202
- (Money(7587.849178, 'EUR'), 0, True, '€7,588'), # noqa: E201,E202
- (Money(0.348102, 'GBP'), 3, False, '0.348'), # noqa: E201,E202
- (Money(0.652923, 'CHF'), 0, True, 'CHF1'), # noqa: E201,E202
- (Money(0.820437, 'CNY'), 1, True, 'CN¥0.8'), # noqa: E201,E202
- (Money(98789.5295680, 'CHF'), 0, False, '98,790'), # noqa: E201,E202
- (Money(0.585787, 'USD'), 1, True, '$0.6'), # noqa: E201,E202
- (Money(0.690541, 'CAD'), 3, True, 'CA$0.691'), # noqa: E201,E202
- (Money(427.814104, 'AUD'), 5, True, 'A$427.81410'), # noqa: E201,E202
+ (Money(3651.285718, 'USD'), 4, True, '$3,651.2857'),
+ (Money(487587.849178, 'CAD'), 5, True, 'CA$487,587.84918'),
+ (Money(0.348102, 'EUR'), 1, False, '0.3'),
+ (Money(0.916530, 'GBP'), 1, True, '£0.9'),
+ (Money(61.031024, 'JPY'), 3, False, '61.031'),
+ (Money(49609.694602, 'JPY'), 1, True, '¥49,609.7'),
+ (Money(155565.264777, 'AUD'), 2, False, '155,565.26'),
+ (Money(0.820437, 'CNY'), 4, True, 'CN¥0.8204'),
+ (Money(7587.849178, 'EUR'), 0, True, '€7,588'),
+ (Money(0.348102, 'GBP'), 3, False, '0.348'),
+ (Money(0.652923, 'CHF'), 0, True, 'CHF1'),
+ (Money(0.820437, 'CNY'), 1, True, 'CN¥0.8'),
+ (Money(98789.5295680, 'CHF'), 0, False, '98,790'),
+ (Money(0.585787, 'USD'), 1, True, '$0.6'),
+ (Money(0.690541, 'CAD'), 3, True, 'CA$0.691'),
+ (Money(427.814104, 'AUD'), 5, True, 'A$427.81410'),
)
with self.settings(LANGUAGE_CODE='en-us'):
@@ -794,7 +794,7 @@ class TestDownloadFile(TestCase):
def test_download(self):
"""Tests for DownloadFile."""
helpers.DownloadFile('hello world', 'out.txt')
- helpers.DownloadFile(bytes(b'hello world'), 'out.bin')
+ helpers.DownloadFile(b'hello world', 'out.bin')
class TestMPTT(TestCase):
@@ -1033,12 +1033,12 @@ class TestVersionNumber(TestCase):
# Check that the current .git values work too
- hash = str(
+ git_hash = str(
subprocess.check_output('git rev-parse --short HEAD'.split()), 'utf-8'
).strip()
# On some systems the hash is a different length, so just check the first 6 characters
- self.assertEqual(hash[:6], version.inventreeCommitHash()[:6])
+ self.assertEqual(git_hash[:6], version.inventreeCommitHash()[:6])
d = (
str(subprocess.check_output('git show -s --format=%ci'.split()), 'utf-8')
@@ -1438,8 +1438,8 @@ class BarcodeMixinTest(InvenTreeTestCase):
'{"part": 17, "stockitem": 12}': 'c88c11ed0628eb7fef0d59b098b96975',
}
- for barcode, hash in hashing_tests.items():
- self.assertEqual(InvenTree.helpers.hash_barcode(barcode), hash)
+ for barcode, expected in hashing_tests.items():
+ self.assertEqual(InvenTree.helpers.hash_barcode(barcode), expected)
class SanitizerTest(TestCase):
@@ -1557,15 +1557,12 @@ class ClassValidationMixinTest(TestCase):
def test(self):
"""Test function."""
- ...
def test1(self):
"""Test function."""
- ...
def test2(self):
"""Test function."""
- ...
required_attributes = ['NAME']
required_overrides = [test, [test1, test2]]
@@ -1573,8 +1570,6 @@ class ClassValidationMixinTest(TestCase):
class InvalidClass:
"""An invalid class that does not inherit from ClassValidationMixin."""
- pass
-
def test_valid_class(self):
"""Test that a valid class passes the validation."""
@@ -1585,11 +1580,9 @@ class ClassValidationMixinTest(TestCase):
def test(self):
"""Test function."""
- ...
def test2(self):
"""Test function."""
- ...
TestClass.validate()
@@ -1612,7 +1605,6 @@ class ClassValidationMixinTest(TestCase):
def test2(self):
"""Test function."""
- ...
with self.assertRaisesRegex(
NotImplementedError,
@@ -1627,8 +1619,6 @@ class ClassProviderMixinTest(TestCase):
class TestClass(ClassProviderMixin):
"""This class is a dummy class to test the ClassProviderMixin."""
- pass
-
def test_get_provider_file(self):
"""Test the get_provider_file function."""
self.assertEqual(self.TestClass.get_provider_file(), __file__)
diff --git a/src/backend/InvenTree/InvenTree/translation.py b/src/backend/InvenTree/InvenTree/translation.py
index bef7448a76..892e362aec 100644
--- a/src/backend/InvenTree/InvenTree/translation.py
+++ b/src/backend/InvenTree/InvenTree/translation.py
@@ -15,7 +15,7 @@ def reload_translation_stats():
STATS_FILE = settings.BASE_DIR.joinpath('InvenTree/locale_stats.json').absolute()
try:
- with open(STATS_FILE, 'r') as f:
+ with open(STATS_FILE, encoding='utf-8') as f:
_translation_stats = json.load(f)
except Exception:
_translation_stats = None
diff --git a/src/backend/InvenTree/InvenTree/unit_test.py b/src/backend/InvenTree/InvenTree/unit_test.py
index 2b525b9aa5..a5430762b2 100644
--- a/src/backend/InvenTree/InvenTree/unit_test.py
+++ b/src/backend/InvenTree/InvenTree/unit_test.py
@@ -10,10 +10,11 @@ from pathlib import Path
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group, Permission
-from django.db import connections
+from django.db import connections, models
from django.http.response import StreamingHttpResponse
from django.test import TestCase
from django.test.utils import CaptureQueriesContext
+from django.urls import reverse
from djmoney.contrib.exchange.models import ExchangeBackend, Rate
from rest_framework.test import APITestCase
@@ -246,8 +247,6 @@ class ExchangeRateMixin:
class InvenTreeTestCase(ExchangeRateMixin, UserMixin, TestCase):
"""Testcase with user setup build in."""
- pass
-
class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
"""Base class for running InvenTree API tests."""
@@ -264,7 +263,9 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
MAX_QUERY_TIME = 7.5
@contextmanager
- def assertNumQueriesLessThan(self, value, using='default', verbose=None, url=None):
+ def assertNumQueriesLessThan(
+ self, value, using='default', verbose=False, url=None, log_to_file=False
+ ):
"""Context manager to check that the number of queries is less than a certain value.
Example:
@@ -282,10 +283,14 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
f'Query count exceeded at {url}: Expected < {value} queries, got {n}'
) # pragma: no cover
- if verbose or n >= value:
- msg = '\r\n%s' % json.dumps(
- context.captured_queries, indent=4
- ) # pragma: no cover
+ # Useful for debugging, disabled by default
+ if log_to_file:
+ with open('queries.txt', 'w', encoding='utf-8') as f:
+ for q in context.captured_queries:
+ f.write(str(q['sql']) + '\n')
+
+ if verbose and n >= value:
+ msg = f'\r\n{json.dumps(context.captured_queries, indent=4)}' # pragma: no cover
else:
msg = None
@@ -294,6 +299,18 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
self.assertLess(n, value, msg=msg)
+ @classmethod
+ def setUpTestData(cls):
+ """Setup for API tests.
+
+ - Ensure that all global settings are assigned default values.
+ """
+ from common.models import InvenTreeSetting
+
+ InvenTreeSetting.build_default_values()
+
+ super().setUpTestData()
+
def check_response(self, url, response, expected_code=None):
"""Debug output for an unexpected response."""
# Check that the response returned the expected status code
@@ -393,7 +410,7 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
def options(self, url, expected_code=None, **kwargs):
"""Issue an OPTIONS request."""
- kwargs['data'] = kwargs.get('data', None)
+ kwargs['data'] = kwargs.get('data')
return self.query(
url, self.client.options, expected_code=expected_code, **kwargs
@@ -490,3 +507,30 @@ class InvenTreeAPITestCase(ExchangeRateMixin, UserMixin, APITestCase):
def assertDictContainsSubset(self, a, b):
"""Assert that dictionary 'a' is a subset of dictionary 'b'."""
self.assertEqual(b, b | a)
+
+
+class AdminTestCase(InvenTreeAPITestCase):
+ """Tests for the admin interface integration."""
+
+ superuser = True
+
+ def helper(self, model: type[models.Model], model_kwargs=None):
+ """Test the admin URL."""
+ if model_kwargs is None:
+ model_kwargs = {}
+
+ # Add object
+ obj = model.objects.create(**model_kwargs)
+ app_app, app_mdl = model._meta.app_label, model._meta.model_name
+
+ # 'Test listing
+ response = self.get(reverse(f'admin:{app_app}_{app_mdl}_changelist'))
+ self.assertEqual(response.status_code, 200)
+
+ # Test change view
+ response = self.get(
+ reverse(f'admin:{app_app}_{app_mdl}_change', kwargs={'object_id': obj.pk})
+ )
+ self.assertEqual(response.status_code, 200)
+
+ return obj
diff --git a/src/backend/InvenTree/InvenTree/urls.py b/src/backend/InvenTree/InvenTree/urls.py
index 91a6ce35ca..7f6d6c6b37 100644
--- a/src/backend/InvenTree/InvenTree/urls.py
+++ b/src/backend/InvenTree/InvenTree/urls.py
@@ -456,7 +456,7 @@ urlpatterns = []
if settings.INVENTREE_ADMIN_ENABLED:
admin_url = settings.INVENTREE_ADMIN_URL
- if settings.ADMIN_SHELL_ENABLE: # noqa
+ if settings.ADMIN_SHELL_ENABLE:
urlpatterns += [path(f'{admin_url}/shell/', include('django_admin_shell.urls'))]
urlpatterns += [
@@ -484,7 +484,7 @@ if settings.ENABLE_PLATFORM_FRONTEND:
urlpatterns += frontendpatterns
-# Append custom plugin URLs (if plugin support is enabled)
+# Append custom plugin URLs (if custom plugin support is enabled)
if settings.PLUGINS_ENABLED:
urlpatterns.append(get_plugin_urls())
diff --git a/src/backend/InvenTree/InvenTree/validators.py b/src/backend/InvenTree/InvenTree/validators.py
index f2a85bc18f..c42248e390 100644
--- a/src/backend/InvenTree/InvenTree/validators.py
+++ b/src/backend/InvenTree/InvenTree/validators.py
@@ -28,9 +28,7 @@ def validate_physical_units(unit):
try:
ureg(unit)
- except AttributeError:
- raise ValidationError(_('Invalid physical unit'))
- except pint.errors.UndefinedUnitError:
+ except (AssertionError, AttributeError, pint.errors.UndefinedUnitError):
raise ValidationError(_('Invalid physical unit'))
@@ -96,7 +94,6 @@ def validate_sales_order_reference(value):
def validate_tree_name(value):
"""Placeholder for legacy function used in migrations."""
- ...
def validate_overage(value):
diff --git a/src/backend/InvenTree/InvenTree/views.py b/src/backend/InvenTree/InvenTree/views.py
index 4f2293b894..b53990be20 100644
--- a/src/backend/InvenTree/InvenTree/views.py
+++ b/src/backend/InvenTree/InvenTree/views.py
@@ -180,7 +180,7 @@ class InvenTreeRoleMixin(PermissionRequiredMixin):
AjaxUpdateView: 'change',
}
- for view_class in permission_map.keys():
+ for view_class in permission_map:
if issubclass(type(self), view_class):
return permission_map[view_class]
@@ -238,7 +238,6 @@ class AjaxMixin(InvenTreeRoleMixin):
Ref: https://docs.djangoproject.com/en/dev/topics/forms/
"""
# Do nothing by default
- pass
def renderJsonResponse(self, request, form=None, data=None, context=None):
"""Render a JSON response based on specific class context.
@@ -286,7 +285,7 @@ class AjaxMixin(InvenTreeRoleMixin):
# Custom feedback`data
fb = self.get_data()
- for key in fb.keys():
+ for key in fb:
data[key] = fb[key]
return JsonResponse(data, safe=False)
@@ -329,11 +328,11 @@ class AjaxUpdateView(AjaxMixin, UpdateView):
request, self.get_form(), context=self.get_context_data()
)
- def save(self, object, form, **kwargs):
+ def save(self, obj, form, **kwargs):
"""Method for updating the object in the database. Default implementation is very simple, but can be overridden if required.
Args:
- object: The current object, to be updated
+ obj: The current object, to be updated
form: The validated form
Returns:
@@ -578,14 +577,10 @@ class UserSessionOverride:
class CustomSessionDeleteView(UserSessionOverride, SessionDeleteView):
"""Revert to settings after session delete."""
- pass
-
class CustomSessionDeleteOtherView(UserSessionOverride, SessionDeleteOtherView):
"""Revert to settings after session delete."""
- pass
-
class CustomLoginView(LoginView):
"""Custom login view that allows login with urlargs."""
diff --git a/src/backend/InvenTree/build/api.py b/src/backend/InvenTree/build/api.py
index 6e2ba21a72..d65d8980b9 100644
--- a/src/backend/InvenTree/build/api.py
+++ b/src/backend/InvenTree/build/api.py
@@ -6,9 +6,8 @@ from django.urls import include, path
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import User
-from rest_framework.exceptions import ValidationError
-
from django_filters import rest_framework as rest_filters
+from rest_framework.exceptions import ValidationError
from importer.mixins import DataExportViewMixin
@@ -35,13 +34,15 @@ class BuildFilter(rest_filters.FilterSet):
model = Build
fields = [
'sales_order',
- 'part',
]
status = rest_filters.NumberFilter(label='Status')
active = rest_filters.BooleanFilter(label='Build is active', method='filter_active')
+ # 'outstanding' is an alias for 'active' here
+ outstanding = rest_filters.BooleanFilter(label='Build is outstanding', method='filter_active')
+
def filter_active(self, queryset, name, value):
"""Filter the queryset to either include or exclude orders which are active."""
if str2bool(value):
@@ -54,6 +55,39 @@ class BuildFilter(rest_filters.FilterSet):
field_name='parent',
)
+ include_variants = rest_filters.BooleanFilter(label=_('Include Variants'), method='filter_include_variants')
+
+ def filter_include_variants(self, queryset, name, value):
+ """Filter by whether or not to include variants of the selected part.
+
+ Note:
+ - This filter does nothing by itself, and requires the 'part' filter to be set.
+ - Refer to the 'filter_part' method for more information.
+ """
+
+ return queryset
+
+ part = rest_filters.ModelChoiceFilter(
+ queryset=part.models.Part.objects.all(),
+ field_name='part',
+ method='filter_part'
+ )
+
+ def filter_part(self, queryset, name, part):
+ """Filter by 'part' which is being built.
+
+ Note:
+ - If "include_variants" is True, include all variants of the selected part.
+ - Otherwise, just filter by the selected part.
+ """
+
+ include_variants = str2bool(self.data.get('include_variants', False))
+
+ if include_variants:
+ return queryset.filter(part__in=part.get_descendants(include_self=True))
+ else:
+ return queryset.filter(part=part)
+
ancestor = rest_filters.ModelChoiceFilter(
queryset=Build.objects.all(),
label=_('Ancestor Build'),
@@ -117,7 +151,7 @@ class BuildFilter(rest_filters.FilterSet):
def filter_responsible(self, queryset, name, owner):
"""Filter by orders which are assigned to the specified owner."""
- owners = list(Owner.objects.filter(pk=value))
+ owners = list(Owner.objects.filter(pk=owner))
# if we query by a user, also find all ownerships through group memberships
if len(owners) > 0 and owners[0].label() == 'user':
@@ -163,6 +197,7 @@ class BuildMixin:
'build_lines__bom_item',
'build_lines__build',
'part',
+ 'part__pricing_data'
)
return queryset
@@ -338,10 +373,10 @@ class BuildLineFilter(rest_filters.FilterSet):
To determine this, we need to know:
- The quantity required for each BuildLine
- - The quantity available for each BuildLine
+ - The quantity available for each BuildLine (including variants and substitutes)
- The quantity allocated for each BuildLine
"""
- flt = Q(quantity__lte=F('total_available_stock') + F('allocated'))
+ flt = Q(quantity__lte=F('allocated') + F('available_stock') + F('available_substitute_stock') + F('available_variant_stock'))
if str2bool(value):
return queryset.filter(flt)
@@ -367,10 +402,13 @@ class BuildLineEndpoint:
def get_queryset(self):
"""Override queryset to select-related and annotate"""
queryset = super().get_queryset()
- source_build = self.get_source_build()
- queryset = build.serializers.BuildLineSerializer.annotate_queryset(queryset, build=source_build)
- return queryset
+ if not hasattr(self, 'source_build'):
+ self.source_build = self.get_source_build()
+
+ source_build = self.source_build
+
+ return build.serializers.BuildLineSerializer.annotate_queryset(queryset, build=source_build)
class BuildLineList(BuildLineEndpoint, DataExportViewMixin, ListCreateAPI):
@@ -414,15 +452,17 @@ class BuildLineList(BuildLineEndpoint, DataExportViewMixin, ListCreateAPI):
def get_source_build(self) -> Build | None:
"""Return the target build for the BuildLine queryset."""
+ source_build = None
+
try:
build_id = self.request.query_params.get('build', None)
if build_id:
- build = Build.objects.get(pk=build_id)
- return build
+ source_build = Build.objects.filter(pk=build_id).first()
except (Build.DoesNotExist, AttributeError, ValueError):
pass
- return None
+ return source_build
+
class BuildLineDetail(BuildLineEndpoint, RetrieveUpdateDestroyAPI):
"""API endpoint for detail view of a BuildLine object."""
@@ -581,13 +621,45 @@ class BuildItemFilter(rest_filters.FilterSet):
'install_into',
]
+ include_variants = rest_filters.BooleanFilter(
+ label=_('Include Variants'), method='filter_include_variants'
+ )
+
+ def filter_include_variants(self, queryset, name, value):
+ """Filter by whether or not to include variants of the selected part.
+
+ Note:
+ - This filter does nothing by itself, and requires the 'part' filter to be set.
+ - Refer to the 'filter_part' method for more information.
+ """
+
+ return queryset
+
part = rest_filters.ModelChoiceFilter(
queryset=part.models.Part.objects.all(),
+ label=_('Part'),
+ method='filter_part',
field_name='stock_item__part',
)
+ def filter_part(self, queryset, name, part):
+ """Filter by 'part' which is being built.
+
+ Note:
+ - If "include_variants" is True, include all variants of the selected part.
+ - Otherwise, just filter by the selected part.
+ """
+
+ include_variants = str2bool(self.data.get('include_variants', False))
+
+ if include_variants:
+ return queryset.filter(stock_item__part__in=part.get_descendants(include_self=True))
+ else:
+ return queryset.filter(stock_item__part=part)
+
build = rest_filters.ModelChoiceFilter(
queryset=build.models.Build.objects.all(),
+ label=_('Build Order'),
field_name='build_line__build',
)
@@ -673,10 +745,12 @@ class BuildItemList(DataExportViewMixin, BulkDeleteMixin, ListCreateAPI):
'quantity',
'location',
'reference',
+ 'IPN',
]
ordering_field_aliases = {
'part': 'stock_item__part__name',
+ 'IPN': 'stock_item__part__IPN',
'sku': 'stock_item__supplier_part__SKU',
'location': 'stock_item__location__name',
'reference': 'build_line__bom_item__reference',
@@ -685,6 +759,7 @@ class BuildItemList(DataExportViewMixin, BulkDeleteMixin, ListCreateAPI):
search_fields = [
'stock_item__supplier_part__SKU',
'stock_item__part__name',
+ 'stock_item__part__IPN',
'build_line__bom_item__reference',
]
diff --git a/src/backend/InvenTree/build/filters.py b/src/backend/InvenTree/build/filters.py
new file mode 100644
index 0000000000..ff3c02a523
--- /dev/null
+++ b/src/backend/InvenTree/build/filters.py
@@ -0,0 +1,25 @@
+"""Queryset filtering helper functions for the Build app."""
+
+
+from django.db import models
+from django.db.models import Sum, Q
+from django.db.models.functions import Coalesce
+
+
+def annotate_allocated_quantity(queryset: Q) -> Q:
+ """
+ Annotate the 'allocated' quantity for each build item in the queryset.
+
+ Arguments:
+ queryset: The BuildLine queryset to annotate
+
+ """
+
+ queryset = queryset.prefetch_related('allocations')
+
+ return queryset.annotate(
+ allocated=Coalesce(
+ Sum('allocations__quantity'), 0,
+ output_field=models.DecimalField()
+ )
+ )
diff --git a/src/backend/InvenTree/build/migrations/0053_alter_build_part.py b/src/backend/InvenTree/build/migrations/0053_alter_build_part.py
new file mode 100644
index 0000000000..d457b9bab2
--- /dev/null
+++ b/src/backend/InvenTree/build/migrations/0053_alter_build_part.py
@@ -0,0 +1,20 @@
+# Generated by Django 4.2.16 on 2024-10-16 06:19
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('part', '0130_alter_parttesttemplate_part'),
+ ('build', '0052_build_status_custom_key_alter_build_status'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='build',
+ name='part',
+ field=models.ForeignKey(help_text='Select part to build', limit_choices_to={'assembly': True}, on_delete=django.db.models.deletion.CASCADE, related_name='builds', to='part.part', verbose_name='Part'),
+ ),
+ ]
diff --git a/src/backend/InvenTree/build/models.py b/src/backend/InvenTree/build/models.py
index 899145f98d..f5530f074d 100644
--- a/src/backend/InvenTree/build/models.py
+++ b/src/backend/InvenTree/build/models.py
@@ -9,7 +9,7 @@ from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
from django.core.validators import MinValueValidator
from django.db import models, transaction
-from django.db.models import Sum, Q
+from django.db.models import F, Sum, Q
from django.db.models.functions import Coalesce
from django.db.models.signals import post_save
from django.dispatch.dispatcher import receiver
@@ -24,6 +24,7 @@ from rest_framework import serializers
from build.status_codes import BuildStatus, BuildStatusGroups
from stock.status_codes import StockStatus, StockHistoryCode
+from build.filters import annotate_allocated_quantity
from build.validators import generate_next_build_reference, validate_build_order_reference
from generic.states import StateTransitionMixin
@@ -124,8 +125,7 @@ class Build(
def save(self, *args, **kwargs):
"""Custom save method for the BuildOrder model"""
- self.validate_reference_field(self.reference)
- self.reference_int = self.rebuild_reference_field(self.reference)
+ self.reference_int = self.validate_reference_field(self.reference)
# Check part when initially creating the build order
if not self.pk or self.has_field_changed('part'):
@@ -270,8 +270,6 @@ class Build(
related_name='builds',
limit_choices_to={
'assembly': True,
- 'active': True,
- 'virtual': False,
},
help_text=_('Select part to build'),
)
@@ -647,7 +645,8 @@ class Build(
if not InvenTree.tasks.offload_task(
build.tasks.complete_build_allocations,
self.pk,
- user.pk if user else None
+ user.pk if user else None,
+ group='build'
):
raise ValidationError(_("Failed to offload task to complete build allocations"))
@@ -774,7 +773,8 @@ class Build(
if not InvenTree.tasks.offload_task(
build.tasks.complete_build_allocations,
self.pk,
- user.pk if user else None
+ user.pk if user else None,
+ group='build',
):
raise ValidationError(_("Failed to offload task to complete build allocations"))
@@ -834,6 +834,16 @@ class Build(
location: Override location
auto_allocate: Automatically allocate stock with matching serial numbers
"""
+
+ trackable_parts = self.part.get_trackable_parts()
+
+ # Create (and cache) a map of valid parts for allocation
+ valid_parts = {}
+
+ for bom_item in trackable_parts:
+ parts = bom_item.get_valid_parts_for_allocation()
+ valid_parts[bom_item.pk] = list([part.pk for part in parts])
+
user = kwargs.get('user', None)
batch = kwargs.get('batch', self.batch)
location = kwargs.get('location', None)
@@ -843,81 +853,55 @@ class Build(
if location is None:
location = self.destination or self.part.get_default_location()
- """
- Determine if we can create a single output (with quantity > 0),
- or multiple outputs (with quantity = 1)
- """
+ if self.part.has_trackable_parts and not serials:
+ raise ValidationError({
+ 'serials': _("Serial numbers must be provided for trackable parts")
+ })
- def _add_tracking_entry(output, user):
- """Helper function to add a tracking entry to the newly created output"""
- deltas = {
- 'quantity': float(output.quantity),
- 'buildorder': self.pk,
- }
-
- if output.batch:
- deltas['batch'] = output.batch
-
- if output.serial:
- deltas['serial'] = output.serial
-
- if output.location:
- deltas['location'] = output.location.pk
-
- output.add_tracking_entry(StockHistoryCode.BUILD_OUTPUT_CREATED, user, deltas)
-
- multiple = False
-
- # Serial numbers are provided? We need to split!
+ # We are generating multiple serialized outputs
if serials:
- multiple = True
-
- # BOM has trackable parts, so we must split!
- if self.part.has_trackable_parts:
- multiple = True
-
- if multiple:
"""Create multiple build outputs with a single quantity of 1."""
- # Quantity *must* be an integer at this point!
- quantity = int(quantity)
+ # Create tracking entries for each item
+ tracking = []
+ allocations = []
- for ii in range(quantity):
+ outputs = stock.models.StockItem._create_serial_numbers(
+ serials,
+ part=self.part,
+ build=self,
+ batch=batch,
+ is_building=True
+ )
- if serials:
- serial = serials[ii]
- else:
- serial = None
+ for output in outputs:
+ # Generate a new historical tracking entry
+ if entry := output.add_tracking_entry(
+ StockHistoryCode.BUILD_OUTPUT_CREATED,
+ user,
+ deltas={
+ 'quantity': 1,
+ 'buildorder': self.pk,
+ 'batch': output.batch,
+ 'serial': output.serial,
+ 'location': location.pk if location else None
+ },
+ commit=False
+ ):
+ tracking.append(entry)
- output = stock.models.StockItem.objects.create(
- quantity=1,
- location=location,
- part=self.part,
- build=self,
- batch=batch,
- serial=serial,
- is_building=True,
- )
+ # Auto-allocate stock based on serial number
+ if auto_allocate:
- _add_tracking_entry(output, user)
-
- if auto_allocate and serial is not None:
-
- # Get a list of BomItem objects which point to "trackable" parts
-
- for bom_item in self.part.get_trackable_parts():
-
- parts = bom_item.get_valid_parts_for_allocation()
+ for bom_item in trackable_parts:
+ valid_part_ids = valid_parts.get(bom_item.pk, [])
items = stock.models.StockItem.objects.filter(
- part__in=parts,
- serial=str(serial),
+ part__pk__in=valid_part_ids,
+ serial=output.serial,
quantity=1,
).filter(stock.models.StockItem.IN_STOCK_FILTER)
- """
- Test if there is a matching serial number!
- """
if items.exists() and items.count() == 1:
stock_item = items[0]
@@ -929,15 +913,23 @@ class Build(
)
# Allocate the stock items against the BuildLine
- BuildItem.objects.create(
- build_line=build_line,
- stock_item=stock_item,
- quantity=1,
- install_into=output,
+ allocations.append(
+ BuildItem(
+ build_line=build_line,
+ stock_item=stock_item,
+ quantity=1,
+ install_into=output,
+ )
)
except BuildLine.DoesNotExist:
pass
+ # Bulk create tracking entries
+ stock.models.StockItemTracking.objects.bulk_create(tracking)
+
+ # Generate stock allocations
+ BuildItem.objects.bulk_create(allocations)
+
else:
"""Create a single build output of the given quantity."""
@@ -950,7 +942,16 @@ class Build(
is_building=True
)
- _add_tracking_entry(output, user)
+ output.add_tracking_entry(
+ StockHistoryCode.BUILD_OUTPUT_CREATED,
+ user,
+ deltas={
+ 'quantity': float(quantity),
+ 'buildorder': self.pk,
+ 'batch': batch,
+ 'location': location.pk if location else None
+ }
+ )
if self.status == BuildStatus.PENDING:
self.status = BuildStatus.PRODUCTION.value
@@ -987,12 +988,13 @@ class Build(
items_to_save = []
items_to_delete = []
- lines = self.untracked_line_items
- lines = lines.prefetch_related('allocations')
+ lines = self.untracked_line_items.all()
+ lines = lines.exclude(bom_item__consumable=True)
+ lines = annotate_allocated_quantity(lines)
for build_line in lines:
- reduce_by = build_line.allocated_quantity() - build_line.quantity
+ reduce_by = build_line.allocated - build_line.quantity
if reduce_by <= 0:
continue
@@ -1290,18 +1292,20 @@ class Build(
"""Returns a list of BuildLine objects which have not been fully allocated."""
lines = self.build_lines.all()
+ # Remove any 'consumable' line items
+ lines = lines.exclude(bom_item__consumable=True)
+
if tracked is True:
lines = lines.filter(bom_item__sub_part__trackable=True)
elif tracked is False:
lines = lines.filter(bom_item__sub_part__trackable=False)
- unallocated_lines = []
+ lines = annotate_allocated_quantity(lines)
- for line in lines:
- if not line.is_fully_allocated():
- unallocated_lines.append(line)
+ # Filter out any lines which have been fully allocated
+ lines = lines.filter(allocated__lt=F('quantity'))
- return unallocated_lines
+ return lines
def is_fully_allocated(self, tracked=None):
"""Test if the BuildOrder has been fully allocated.
@@ -1314,19 +1318,24 @@ class Build(
Returns:
True if the BuildOrder has been fully allocated, otherwise False
"""
- lines = self.unallocated_lines(tracked=tracked)
- return len(lines) == 0
+
+ return self.unallocated_lines(tracked=tracked).count() == 0
def is_output_fully_allocated(self, output):
"""Determine if the specified output (StockItem) has been fully allocated for this build
Args:
- output: StockItem object
+ output: StockItem object (the "in production" output to test against)
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):
+
+ lines = self.build_lines.filter(bom_item__sub_part__trackable=True)
+ lines = lines.exclude(bom_item__consumable=True)
+
+ # Find any lines which have not been fully allocated
+ for line in lines:
# Grab all BuildItem objects which point to this output
allocations = BuildItem.objects.filter(
build_line=line,
@@ -1350,11 +1359,14 @@ class Build(
Returns:
True if any BuildLine has been over-allocated.
"""
- for line in self.build_lines.all():
- if line.is_overallocated():
- return True
- return False
+ lines = self.build_lines.all().exclude(bom_item__consumable=True)
+ lines = annotate_allocated_quantity(lines)
+
+ # Find any lines which have been over-allocated
+ lines = lines.filter(allocated__gt=F('quantity'))
+
+ return lines.count() > 0
@property
def is_active(self):
@@ -1435,7 +1447,11 @@ def after_save_build(sender, instance: Build, created: bool, **kwargs):
instance.create_build_line_items()
# Run checks on required parts
- InvenTree.tasks.offload_task(build_tasks.check_build_stock, instance)
+ InvenTree.tasks.offload_task(
+ build_tasks.check_build_stock,
+ instance,
+ group='build'
+ )
# Notify the responsible users that the build order has been created
InvenTree.helpers_model.notify_responsible(instance, sender, exclude=instance.issued_by)
@@ -1595,12 +1611,19 @@ class BuildItem(InvenTree.models.InvenTreeMetadataModel):
'quantity': _(f'Allocated quantity ({q}) must not exceed available stock quantity ({a})')
})
- # Allocated quantity cannot cause the stock item to be over-allocated
+ # Ensure that we do not 'over allocate' a stock item
available = decimal.Decimal(self.stock_item.quantity)
- allocated = decimal.Decimal(self.stock_item.allocation_count())
quantity = decimal.Decimal(self.quantity)
+ build_allocation_count = decimal.Decimal(self.stock_item.build_allocation_count(
+ exclude_allocations={'pk': self.pk}
+ ))
+ sales_allocation_count = decimal.Decimal(self.stock_item.sales_order_allocation_count())
- if available - allocated + quantity < quantity:
+ total_allocation = (
+ build_allocation_count + sales_allocation_count + quantity
+ )
+
+ if total_allocation > available:
raise ValidationError({
'quantity': _('Stock item is over-allocated')
})
@@ -1692,6 +1715,9 @@ class BuildItem(InvenTree.models.InvenTreeMetadataModel):
- If the referenced part is trackable, the stock item will be *installed* into the build output
- If the referenced part is *not* trackable, the stock item will be *consumed* by the build order
+
+ TODO: This is quite expensive (in terms of number of database hits) - and requires some thought
+
"""
item = self.stock_item
diff --git a/src/backend/InvenTree/build/serializers.py b/src/backend/InvenTree/build/serializers.py
index 473c4b423d..236641b69c 100644
--- a/src/backend/InvenTree/build/serializers.py
+++ b/src/backend/InvenTree/build/serializers.py
@@ -7,6 +7,7 @@ from django.db import models, transaction
from django.db.models import (
BooleanField,
Case,
+ Count,
ExpressionWrapper,
F,
FloatField,
@@ -179,6 +180,7 @@ class BuildSerializer(NotesFieldMixin, DataImportExportSerializerMixin, InvenTre
return reference
+ @transaction.atomic
def create(self, validated_data):
"""Save the Build object."""
@@ -191,6 +193,7 @@ class BuildSerializer(NotesFieldMixin, DataImportExportSerializerMixin, InvenTre
InvenTree.tasks.offload_task(
build.tasks.create_child_builds,
build_order.pk,
+ group='build'
)
return build_order
@@ -396,7 +399,8 @@ class BuildOutputCreateSerializer(serializers.Serializer):
self.serials = InvenTree.helpers.extract_serial_numbers(
serial_numbers,
quantity,
- part.get_latest_serial_number()
+ part.get_latest_serial_number(),
+ part=part
)
except DjangoValidationError as e:
raise ValidationError({
@@ -404,11 +408,7 @@ class BuildOutputCreateSerializer(serializers.Serializer):
})
# Check for conflicting serial numbesr
- existing = []
-
- for serial in self.serials:
- if not part.validate_serial_number(serial):
- existing.append(serial)
+ existing = part.find_conflicting_serial_numbers(self.serials)
if len(existing) > 0:
@@ -555,7 +555,7 @@ class BuildOutputCompleteSerializer(serializers.Serializer):
fields = [
'outputs',
'location',
- 'status',
+ 'status_custom_key',
'accept_incomplete_allocation',
'notes',
]
@@ -573,7 +573,7 @@ class BuildOutputCompleteSerializer(serializers.Serializer):
help_text=_("Location for completed build outputs"),
)
- status = serializers.ChoiceField(
+ status_custom_key = serializers.ChoiceField(
choices=StockStatus.items(),
default=StockStatus.OK.value,
label=_("Status"),
@@ -621,8 +621,8 @@ class BuildOutputCompleteSerializer(serializers.Serializer):
data = self.validated_data
- location = data['location']
- status = data['status']
+ location = data.get('location', None)
+ status = data.get('status_custom_key', StockStatus.OK.value)
notes = data.get('notes', '')
outputs = data.get('outputs', [])
@@ -891,8 +891,8 @@ class BuildUnallocationSerializer(serializers.Serializer):
data = self.validated_data
build.deallocate_stock(
- build_line=data['build_line'],
- output=data['output']
+ build_line=data.get('build_line', None),
+ output=data.get('output', None),
)
@@ -1137,7 +1137,8 @@ class BuildAutoAllocationSerializer(serializers.Serializer):
exclude_location=data.get('exclude_location', None),
interchangeable=data['interchangeable'],
substitutes=data['substitutes'],
- optional_items=data['optional_items']
+ optional_items=data['optional_items'],
+ group='build'
):
raise ValidationError(_("Failed to start auto-allocation task"))
@@ -1280,7 +1281,9 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
'bom_item_detail',
'part_detail',
'quantity',
- 'allocations',
+
+ # Build detail fields
+ 'build_reference',
# BOM item detail fields
'reference',
@@ -1304,9 +1307,11 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
'available_stock',
'available_substitute_stock',
'available_variant_stock',
- 'total_available_stock',
'external_stock',
+ # Related fields
+ 'allocations',
+
# Extra fields only for data export
'part_description',
'part_category_name',
@@ -1318,6 +1323,9 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
'allocations',
]
+ # Build info fields
+ build_reference = serializers.CharField(source='build.reference', label=_('Build Reference'), read_only=True)
+
# Part info fields
part = serializers.PrimaryKeyRelatedField(source='bom_item.sub_part', label=_('Part'), many=False, read_only=True)
part_name = serializers.CharField(source='bom_item.sub_part.name', label=_('Part Name'), read_only=True)
@@ -1327,6 +1335,8 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
part_category_id = serializers.PrimaryKeyRelatedField(source='bom_item.sub_part.category', label=_('Part Category ID'), read_only=True)
part_category_name = serializers.CharField(source='bom_item.sub_part.category.name', label=_('Part Category Name'), read_only=True)
+ allocations = BuildItemSerializer(many=True, read_only=True)
+
# BOM item info fields
reference = serializers.CharField(source='bom_item.reference', label=_('Reference'), read_only=True)
consumable = serializers.BooleanField(source='bom_item.consumable', label=_('Consumable'), read_only=True)
@@ -1341,11 +1351,21 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
bom_item = serializers.PrimaryKeyRelatedField(label=_('BOM Item'), read_only=True)
# Foreign key fields
- bom_item_detail = part_serializers.BomItemSerializer(source='bom_item', many=False, read_only=True, pricing=False)
+ bom_item_detail = part_serializers.BomItemSerializer(
+ source='bom_item',
+ many=False,
+ read_only=True,
+ pricing=False,
+ substitutes=False,
+ sub_part_detail=False,
+ part_detail=False
+ )
+
part_detail = part_serializers.PartBriefSerializer(source='bom_item.sub_part', many=False, read_only=True, pricing=False)
- allocations = BuildItemSerializer(many=True, read_only=True)
# Annotated (calculated) fields
+
+ # Total quantity of allocated stock
allocated = serializers.FloatField(
label=_('Allocated Stock'),
read_only=True
@@ -1361,15 +1381,10 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
read_only=True
)
- available_stock = serializers.FloatField(
- label=_('Available Stock'),
- read_only=True
- )
-
+ external_stock = serializers.FloatField(read_only=True, label=_('External Stock'))
+ available_stock = serializers.FloatField(read_only=True, label=_('Available Stock'))
available_substitute_stock = serializers.FloatField(read_only=True, label=_('Available Substitute Stock'))
available_variant_stock = serializers.FloatField(read_only=True, label=_('Available Variant Stock'))
- total_available_stock = serializers.FloatField(read_only=True, label=_('Total Available Stock'))
- external_stock = serializers.FloatField(read_only=True, label=_('External Stock'))
@staticmethod
def annotate_queryset(queryset, build=None):
@@ -1391,14 +1406,16 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
'build',
'bom_item',
'bom_item__part',
- 'bom_item__part__pricing_data',
'bom_item__sub_part',
- 'bom_item__sub_part__pricing_data',
)
# Pre-fetch related fields
queryset = queryset.prefetch_related(
- 'bom_item__sub_part__tags',
+ 'allocations',
+ 'allocations__stock_item',
+ 'allocations__stock_item__part',
+ 'allocations__stock_item__location',
+
'bom_item__sub_part__stock_items',
'bom_item__sub_part__stock_items__allocations',
'bom_item__sub_part__stock_items__sales_order_allocations',
@@ -1407,26 +1424,63 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
'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',
- 'allocations__stock_item__supplier_part',
- 'allocations__stock_item__supplier_part__part',
- 'allocations__stock_item__supplier_part__supplier',
- 'allocations__stock_item__supplier_part__manufacturer_part',
- 'allocations__stock_item__supplier_part__manufacturer_part__manufacturer',
+ # Defer expensive fields which we do not need for this serializer
+
+ queryset = queryset.defer(
+ 'build__lft',
+ 'build__rght',
+ 'build__level',
+ 'build__tree_id',
+ 'build__destination',
+ 'build__take_from',
+ 'build__completed_by',
+ 'build__issued_by',
+ 'build__sales_order',
+ 'build__parent',
+ 'build__notes',
+ 'build__metadata',
+ 'build__responsible',
+ 'build__barcode_data',
+ 'build__barcode_hash',
+ 'build__project_code',
+ ).defer(
+ 'bom_item__metadata'
+ ).defer(
+ 'bom_item__part__lft',
+ 'bom_item__part__rght',
+ 'bom_item__part__level',
+ 'bom_item__part__tree_id',
+ 'bom_item__part__tags',
+ 'bom_item__part__notes',
+ 'bom_item__part__variant_of',
+ 'bom_item__part__revision_of',
+ 'bom_item__part__creation_user',
+ 'bom_item__part__bom_checked_by',
+ 'bom_item__part__default_supplier',
+ 'bom_item__part__responsible_owner',
+ ).defer(
+ 'bom_item__sub_part__lft',
+ 'bom_item__sub_part__rght',
+ 'bom_item__sub_part__level',
+ 'bom_item__sub_part__tree_id',
+ 'bom_item__sub_part__tags',
+ 'bom_item__sub_part__notes',
+ 'bom_item__sub_part__variant_of',
+ 'bom_item__sub_part__revision_of',
+ 'bom_item__sub_part__creation_user',
+ 'bom_item__sub_part__bom_checked_by',
+ 'bom_item__sub_part__default_supplier',
+ 'bom_item__sub_part__responsible_owner',
)
# Annotate the "allocated" quantity
- # Difficulty: Easy
queryset = queryset.annotate(
allocated=Coalesce(
Sum('allocations__quantity'), 0,
output_field=models.DecimalField()
- ),
+ )
)
ref = 'bom_item__sub_part__'
@@ -1449,7 +1503,6 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
)
# Annotate the "on_order" quantity
- # Difficulty: Medium
queryset = queryset.annotate(
on_order=part.filters.annotate_on_order_quantity(reference=ref),
)
@@ -1512,12 +1565,4 @@ class BuildLineSerializer(DataImportExportSerializerMixin, InvenTreeModelSeriali
)
)
- # 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/src/backend/InvenTree/build/status_codes.py b/src/backend/InvenTree/build/status_codes.py
index bc7fc47ddc..1c8e66de30 100644
--- a/src/backend/InvenTree/build/status_codes.py
+++ b/src/backend/InvenTree/build/status_codes.py
@@ -23,3 +23,7 @@ class BuildStatusGroups:
BuildStatus.ON_HOLD.value,
BuildStatus.PRODUCTION.value,
]
+
+ COMPLETE = [
+ BuildStatus.COMPLETE.value,
+ ]
diff --git a/src/backend/InvenTree/build/tasks.py b/src/backend/InvenTree/build/tasks.py
index 5c95cfe70e..0df3233179 100644
--- a/src/backend/InvenTree/build/tasks.py
+++ b/src/backend/InvenTree/build/tasks.py
@@ -1,35 +1,36 @@
-"""Background task definitions for the BuildOrder app"""
+"""Background task definitions for the BuildOrder app."""
+
+import logging
+import random
+import time
from datetime import timedelta
from decimal import Decimal
-import logging
from django.contrib.auth.models import User
-from django.utils.translation import gettext_lazy as _
from django.template.loader import render_to_string
+from django.db import transaction
+from django.utils.translation import gettext_lazy as _
from allauth.account.models import EmailAddress
-from plugin.events import trigger_event
+import build.models as build_models
import common.notifications
-import build.models
-import InvenTree.email
import InvenTree.helpers
+import InvenTree.helpers_email
import InvenTree.helpers_model
import InvenTree.tasks
-from InvenTree.ready import isImportingData
-from build.status_codes import BuildStatusGroups
-
import part.models as part_models
-
+from build.status_codes import BuildStatusGroups
+from InvenTree.ready import isImportingData
+from plugin.events import trigger_event
logger = logging.getLogger('inventree')
def auto_allocate_build(build_id: int, **kwargs):
"""Run auto-allocation for a specified BuildOrder."""
-
- build_order = build.models.Build.objects.filter(pk=build_id).first()
+ build_order = build_models.Build.objects.filter(pk=build_id).first()
if not build_order:
logger.warning("Could not auto-allocate BuildOrder <%s> - BuildOrder does not exist", build_id)
@@ -40,8 +41,7 @@ def auto_allocate_build(build_id: int, **kwargs):
def complete_build_allocations(build_id: int, user_id: int):
"""Complete build allocations for a specified BuildOrder."""
-
- build_order = build.models.Build.objects.filter(pk=build_id).first()
+ build_order = build_models.Build.objects.filter(pk=build_id).first()
if user_id:
try:
@@ -75,7 +75,7 @@ def update_build_order_lines(bom_item_pk: int):
assemblies = bom_item.get_assemblies()
# Find all active builds which reference any of the parts
- builds = build.models.Build.objects.filter(
+ builds = build_models.Build.objects.filter(
part__in=list(assemblies),
status__in=BuildStatusGroups.ACTIVE_CODES
)
@@ -83,7 +83,7 @@ def update_build_order_lines(bom_item_pk: int):
# 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(
+ line = build_models.BuildLine.objects.filter(
build=bo,
bom_item=bom_item,
).first()
@@ -97,7 +97,7 @@ def update_build_order_lines(bom_item_pk: int):
line.save()
else:
# Create a new line item
- build.models.BuildLine.objects.create(
+ build_models.BuildLine.objects.create(
build=bo,
bom_item=bom_item,
quantity=q,
@@ -107,7 +107,7 @@ def update_build_order_lines(bom_item_pk: int):
logger.info("Updated %s build orders for part %s", builds.count(), bom_item.part)
-def check_build_stock(build: build.models.Build):
+def check_build_stock(build: build_models.Build):
"""Check the required stock for a newly created build order.
Send an email out to any subscribed users if stock is low.
@@ -185,7 +185,7 @@ def check_build_stock(build: build.models.Build):
recipients = emails.values_list('email', flat=True)
- InvenTree.email.send_email(subject, '', recipients, html_message=html_message)
+ InvenTree.helpers_email.send_email(subject, '', recipients, html_message=html_message)
def create_child_builds(build_id: int) -> None:
@@ -196,36 +196,59 @@ def create_child_builds(build_id: int) -> None:
"""
try:
- build_order = build.models.Build.objects.get(pk=build_id)
- except (Build.DoesNotExist, ValueError):
+ build_order = build_models.Build.objects.get(pk=build_id)
+ except (build_models.Build.DoesNotExist, ValueError):
return
assembly_items = build_order.part.get_bom_items().filter(sub_part__assembly=True)
- for item in assembly_items:
- quantity = item.quantity * build_order.quantity
+ # Random delay, to reduce likelihood of race conditions from multiple build orders being created simultaneously
+ time.sleep(random.random())
- sub_order = build.models.Build.objects.create(
- part=item.sub_part,
- quantity=quantity,
- title=build_order.title,
- batch=build_order.batch,
- parent=build_order,
- target_date=build_order.target_date,
- sales_order=build_order.sales_order,
- issued_by=build_order.issued_by,
- responsible=build_order.responsible,
- )
+ with transaction.atomic():
+ # Atomic transaction to ensure that all child build orders are created together, or not at all
+ # This is critical to prevent duplicate child build orders being created (e.g. if the task is re-run)
- # Offload the child build order creation to the background task queue
- InvenTree.tasks.offload_task(
- create_child_builds,
- sub_order.pk
- )
+ sub_build_ids = []
+
+ for item in assembly_items:
+ quantity = item.quantity * build_order.quantity
-def notify_overdue_build_order(bo: build.models.Build):
- """Notify appropriate users that a Build has just become 'overdue'"""
+ # Check if the child build order has already been created
+ if build_models.Build.objects.filter(
+ part=item.sub_part,
+ parent=build_order,
+ quantity=quantity,
+ status__in=BuildStatusGroups.ACTIVE_CODES
+ ).exists():
+ continue
+
+ sub_order = build_models.Build.objects.create(
+ part=item.sub_part,
+ quantity=quantity,
+ title=build_order.title,
+ batch=build_order.batch,
+ parent=build_order,
+ target_date=build_order.target_date,
+ sales_order=build_order.sales_order,
+ issued_by=build_order.issued_by,
+ responsible=build_order.responsible,
+ )
+
+ sub_build_ids.append(sub_order.pk)
+
+ for pk in sub_build_ids:
+ # Offload the child build order creation to the background task queue
+ InvenTree.tasks.offload_task(
+ create_child_builds,
+ pk,
+ group='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:
@@ -265,7 +288,7 @@ def notify_overdue_build_order(bo: build.models.Build):
@InvenTree.tasks.scheduled_task(InvenTree.tasks.ScheduledTask.DAILY)
def check_overdue_build_orders():
- """Check if any outstanding BuildOrders have just become overdue
+ """Check if any outstanding BuildOrders have just become overdue.
- This check is performed daily
- Look at the 'target_date' of any outstanding BuildOrder objects
@@ -273,7 +296,7 @@ def check_overdue_build_orders():
"""
yesterday = InvenTree.helpers.current_date() - timedelta(days=1)
- overdue_orders = build.models.Build.objects.filter(
+ overdue_orders = build_models.Build.objects.filter(
target_date=yesterday,
status__in=BuildStatusGroups.ACTIVE_CODES
)
diff --git a/src/backend/InvenTree/build/templates/build/build_base.html b/src/backend/InvenTree/build/templates/build/build_base.html
index e9c4b5b9d2..a1d798a5ec 100644
--- a/src/backend/InvenTree/build/templates/build/build_base.html
+++ b/src/backend/InvenTree/build/templates/build/build_base.html
@@ -3,6 +3,7 @@
{% load static %}
{% load i18n %}
{% load generic %}
+{% load barcode %}
{% load inventree_extras %}
{% block page_title %}
@@ -84,7 +85,7 @@ src="{% static 'img/blank_image.png' %}"
{% if build.can_issue %}
-
+
{% trans "Issue Build" %}
{% elif build.active %}
@@ -310,7 +311,7 @@ src="{% static 'img/blank_image.png' %}"
$('#show-qr-code').click(function() {
showQRDialog(
'{% trans "Build Order QR Code" escape %}',
- '{{ build.barcode }}'
+ `{% clean_barcode build.barcode %}`
);
});
diff --git a/src/backend/InvenTree/build/test_api.py b/src/backend/InvenTree/build/test_api.py
index 9183e1b436..a6a463fdc3 100644
--- a/src/backend/InvenTree/build/test_api.py
+++ b/src/backend/InvenTree/build/test_api.py
@@ -7,7 +7,7 @@ from django.urls import reverse
from rest_framework import status
from part.models import Part, BomItem
-from build.models import Build, BuildItem
+from build.models import Build, BuildItem, BuildLine
from stock.models import StockItem
from build.status_codes import BuildStatus
@@ -451,6 +451,10 @@ class BuildTest(BuildAPITest):
# Now, let's delete each build output individually via the API
outputs = bo.build_outputs.all()
+ # Assert that each output is currently in production
+ for output in outputs:
+ self.assertTrue(output.is_building)
+
delete_url = reverse('api-build-output-delete', kwargs={'pk': 1})
response = self.post(
@@ -993,6 +997,65 @@ class BuildAllocationTest(BuildAPITest):
expected_code=201,
)
+class BuildItemTest(BuildAPITest):
+ """Unit tests for build items.
+
+ For this test, we will be using Build ID=1;
+
+ - This points to Part 100 (see fixture data in part.yaml)
+ - This Part already has a BOM with 4 items (see fixture data in bom.yaml)
+ - There are no BomItem objects yet created for this build
+ """
+
+ def setUp(self):
+ """Basic operation as part of test suite setup"""
+ super().setUp()
+
+ self.assignRole('build.add')
+ self.assignRole('build.change')
+
+ self.build = Build.objects.get(pk=1)
+
+ # Regenerate BuildLine objects
+ self.build.create_build_line_items()
+
+ # Record number of build items which exist at the start of each test
+ self.n = BuildItem.objects.count()
+
+ def test_update_overallocated(self):
+ """Test update of overallocated stock items."""
+
+ si = StockItem.objects.get(pk=2)
+
+ # Find line item
+ line = self.build.build_lines.all().filter(bom_item__sub_part=si.part).first()
+
+ # Set initial stock item quantity
+ si.quantity = 100
+ si.save()
+
+ # Create build item
+ bi = BuildItem(
+ build_line=line,
+ stock_item=si,
+ quantity=100
+ )
+ bi.save()
+
+ # Reduce stock item quantity
+ si.quantity = 50
+ si.save()
+
+ # Reduce build item quantity
+ url = reverse('api-build-item-detail', kwargs={'pk': bi.pk})
+
+ self.patch(
+ url,
+ {
+ "quantity": 50,
+ },
+ expected_code=200,
+ )
class BuildOverallocationTest(BuildAPITest):
"""Unit tests for over allocation of stock items against a build order.
@@ -1039,6 +1102,12 @@ class BuildOverallocationTest(BuildAPITest):
outputs = cls.build.build_outputs.all()
cls.build.complete_build_output(outputs[0], cls.user)
+ def setUp(self):
+ """Basic operation as part of test suite setup"""
+ super().setUp()
+
+ self.generate_exchange_rates()
+
def test_setup(self):
"""Validate expected state after set-up."""
self.assertEqual(self.build.incomplete_outputs.count(), 0)
@@ -1067,7 +1136,7 @@ class BuildOverallocationTest(BuildAPITest):
'accept_overallocated': 'accept',
},
expected_code=201,
- max_query_count=550, # TODO: Come back and refactor this
+ max_query_count=1000, # TODO: Come back and refactor this
)
self.build.refresh_from_db()
@@ -1088,9 +1157,11 @@ class BuildOverallocationTest(BuildAPITest):
'accept_overallocated': 'trim',
},
expected_code=201,
- max_query_count=600, # TODO: Come back and refactor this
+ max_query_count=1000, # TODO: Come back and refactor this
)
+ # Note: Large number of queries is due to pricing recalculation for each stock item
+
self.build.refresh_from_db()
# Build should have been marked as complete
@@ -1202,6 +1273,86 @@ class BuildListTest(BuildAPITest):
self.assertEqual(len(builds), 20)
+class BuildOutputCreateTest(BuildAPITest):
+ """Unit test for creating build output via API."""
+
+ def test_create_serialized_output(self):
+ """Create a serialized build output via the API."""
+
+ build_id = 1
+
+ url = reverse('api-build-output-create', kwargs={'pk': build_id})
+
+ build = Build.objects.get(pk=build_id)
+ part = build.part
+
+ n_outputs = build.output_count
+ n_items = part.stock_items.count()
+
+ # Post with invalid data
+ response = self.post(
+ url,
+ data={
+ 'quantity': 10,
+ 'serial_numbers': '1-100',
+ },
+ expected_code=400
+ )
+
+ self.assertIn('Group range 1-100 exceeds allowed quantity (10)', str(response.data['serial_numbers']))
+
+ # Build outputs have not increased
+ self.assertEqual(n_outputs, build.output_count)
+
+ # Stock items have not increased
+ self.assertEqual(n_items, part.stock_items.count())
+
+ response = self.post(
+ url,
+ data={
+ 'quantity': 5,
+ 'serial_numbers': '1,2,3-5',
+ },
+ expected_code=201
+ )
+
+ # Build outputs have incdeased
+ self.assertEqual(n_outputs + 5, build.output_count)
+
+ # Stock items have increased
+ self.assertEqual(n_items + 5, part.stock_items.count())
+
+ # Serial numbers have been created
+ for sn in range(1, 6):
+ self.assertTrue(part.stock_items.filter(serial=sn).exists())
+
+ def test_create_unserialized_output(self):
+ """Create an unserialized build output via the API."""
+
+ build_id = 1
+ url = reverse('api-build-output-create', kwargs={'pk': build_id})
+
+ build = Build.objects.get(pk=build_id)
+ part = build.part
+
+ n_outputs = build.output_count
+ n_items = part.stock_items.count()
+
+ # Create a single new output
+ self.post(
+ url,
+ data={
+ 'quantity': 10,
+ },
+ expected_code=201
+ )
+
+ # Build outputs have increased
+ self.assertEqual(n_outputs + 1, build.output_count)
+
+ # Stock items have increased
+ self.assertEqual(n_items + 1, part.stock_items.count())
+
class BuildOutputScrapTest(BuildAPITest):
"""Unit tests for scrapping build outputs"""
@@ -1324,3 +1475,29 @@ class BuildOutputScrapTest(BuildAPITest):
output.refresh_from_db()
self.assertEqual(output.status, StockStatus.REJECTED)
self.assertFalse(output.is_building)
+
+
+class BuildLineTests(BuildAPITest):
+ """Unit tests for the BuildLine API endpoints."""
+
+ def test_filter_available(self):
+ """Filter BuildLine objects by 'available' status."""
+
+ url = reverse('api-build-line-list')
+
+ # First *all* BuildLine objects
+ response = self.get(url)
+ self.assertEqual(len(response.data), BuildLine.objects.count())
+
+ # Filter by 'available' status
+ # Note: The max_query_time is bumped up here, as postgresql backend has some strange issues (only during testing)
+ response = self.get(url, data={'available': True}, max_query_time=15)
+ n_t = len(response.data)
+ self.assertGreater(n_t, 0)
+
+ # Note: The max_query_time is bumped up here, as postgresql backend has some strange issues (only during testing)
+ response = self.get(url, data={'available': False}, max_query_time=15)
+ n_f = len(response.data)
+ self.assertGreater(n_f, 0)
+
+ self.assertEqual(n_t + n_f, BuildLine.objects.count())
diff --git a/src/backend/InvenTree/build/test_build.py b/src/backend/InvenTree/build/test_build.py
index 7e190e3e21..2df213b370 100644
--- a/src/backend/InvenTree/build/test_build.py
+++ b/src/backend/InvenTree/build/test_build.py
@@ -55,6 +55,7 @@ class BuildTestBase(TestCase):
description="Why does it matter what my description is?",
assembly=True,
trackable=True,
+ testable=True,
)
# create one build with one required test template
@@ -63,6 +64,7 @@ class BuildTestBase(TestCase):
description="Why does it matter what my description is?",
assembly=True,
trackable=True,
+ testable=True,
)
cls.test_template_required = PartTestTemplate.objects.create(
@@ -98,6 +100,7 @@ class BuildTestBase(TestCase):
description="Why does it matter what my description is?",
assembly=True,
trackable=True,
+ testable=True,
)
cls.test_template_non_required = PartTestTemplate.objects.create(
diff --git a/src/backend/InvenTree/common/admin.py b/src/backend/InvenTree/common/admin.py
index a0719f9ab4..a2b02522db 100644
--- a/src/backend/InvenTree/common/admin.py
+++ b/src/backend/InvenTree/common/admin.py
@@ -35,6 +35,15 @@ class AttachmentAdmin(admin.ModelAdmin):
search_fields = ('content_type', 'comment')
+@admin.register(common.models.BarcodeScanResult)
+class BarcodeScanResultAdmin(admin.ModelAdmin):
+ """Admin interface for BarcodeScanResult objects."""
+
+ list_display = ('data', 'timestamp', 'user', 'endpoint', 'result')
+
+ list_filter = ('user', 'endpoint', 'result')
+
+
@admin.register(common.models.ProjectCode)
class ProjectCodeAdmin(ImportExportModelAdmin):
"""Admin settings for ProjectCode."""
diff --git a/src/backend/InvenTree/common/api.py b/src/backend/InvenTree/common/api.py
index fe5e622762..e257c31a2f 100644
--- a/src/backend/InvenTree/common/api.py
+++ b/src/backend/InvenTree/common/api.py
@@ -1,6 +1,7 @@
"""Provides a JSON API for common components."""
import json
+from typing import Type
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
@@ -19,6 +20,7 @@ from django_q.tasks import async_task
from djmoney.contrib.exchange.models import ExchangeBackend, Rate
from drf_spectacular.utils import OpenApiResponse, extend_schema
from error_report.models import Error
+from pint._typing import UnitLike
from rest_framework import permissions, serializers
from rest_framework.exceptions import NotAcceptable, NotFound, PermissionDenied
from rest_framework.permissions import IsAdminUser
@@ -27,6 +29,7 @@ from rest_framework.views import APIView
import common.models
import common.serializers
+import InvenTree.conversion
from common.icons import get_icon_packs
from common.settings import get_global_setting
from generic.states.api import urlpattern as generic_states_api_urls
@@ -47,7 +50,7 @@ from plugin.models import NotificationUserSetting
from plugin.serializers import NotificationUserSettingSerializer
-class CsrfExemptMixin(object):
+class CsrfExemptMixin:
"""Exempts the view from CSRF requirements."""
@method_decorator(csrf_exempt)
@@ -136,7 +139,7 @@ class CurrencyExchangeView(APIView):
serializer_class = None
@extend_schema(responses={200: common.serializers.CurrencyExchangeSerializer})
- def get(self, request, format=None):
+ def get(self, request, fmt=None):
"""Return information on available currency conversions."""
# Extract a list of all available rates
try:
@@ -244,10 +247,7 @@ class GlobalSettingsDetail(RetrieveUpdateAPI):
"""Attempt to find a global setting object with the provided key."""
key = str(self.kwargs['key']).upper()
- if (
- key.startswith('_')
- or key not in common.models.InvenTreeSetting.SETTINGS.keys()
- ):
+ if key.startswith('_') or key not in common.models.InvenTreeSetting.SETTINGS:
raise NotFound()
return common.models.InvenTreeSetting.get_setting_object(
@@ -318,7 +318,7 @@ class UserSettingsDetail(RetrieveUpdateAPI):
if (
key.startswith('_')
- or key not in common.models.InvenTreeUserSetting.SETTINGS.keys()
+ or key not in common.models.InvenTreeUserSetting.SETTINGS
):
raise NotFound()
@@ -536,6 +536,36 @@ class CustomUnitDetail(RetrieveUpdateDestroyAPI):
permission_classes = [permissions.IsAuthenticated, IsStaffOrReadOnly]
+class AllUnitList(ListAPI):
+ """List of all defined units."""
+
+ serializer_class = common.serializers.AllUnitListResponseSerializer
+ permission_classes = [permissions.IsAuthenticated, IsStaffOrReadOnly]
+
+ def get(self, request, *args, **kwargs):
+ """Return a list of all available units."""
+ reg = InvenTree.conversion.get_unit_registry()
+ all_units = {k: self.get_unit(reg, k) for k in reg}
+ data = {
+ 'default_system': reg.default_system,
+ 'available_systems': dir(reg.sys),
+ 'available_units': {k: v for k, v in all_units.items() if v},
+ }
+ return Response(data)
+
+ def get_unit(self, reg, k):
+ """Parse a unit from the registry."""
+ if not hasattr(reg, k):
+ return None
+ unit: Type[UnitLike] = getattr(reg, k)
+ return {
+ 'name': k,
+ 'is_alias': reg.get_name(k) == k,
+ 'compatible_units': [str(a) for a in unit.compatible_units()],
+ 'isdimensionless': unit.dimensionless,
+ }
+
+
class ErrorMessageList(BulkDeleteMixin, ListAPI):
"""List view for server error messages."""
@@ -566,7 +596,7 @@ class BackgroundTaskOverview(APIView):
permission_classes = [permissions.IsAuthenticated, IsAdminUser]
serializer_class = None
- def get(self, request, format=None):
+ def get(self, request, fmt=None):
"""Return information about the current status of the background task queue."""
import django_q.models as q_models
@@ -903,6 +933,7 @@ common_api_urls = [
path('', CustomUnitDetail.as_view(), name='api-custom-unit-detail')
]),
),
+ path('all/', AllUnitList.as_view(), name='api-all-unit-list'),
path('', CustomUnitList.as_view(), name='api-custom-unit-list'),
]),
),
diff --git a/src/backend/InvenTree/common/currency.py b/src/backend/InvenTree/common/currency.py
index 1769cf8c36..c44d5019aa 100644
--- a/src/backend/InvenTree/common/currency.py
+++ b/src/backend/InvenTree/common/currency.py
@@ -113,7 +113,9 @@ def after_change_currency(setting) -> None:
InvenTree.tasks.update_exchange_rates(force=True)
# Offload update of part prices to a background task
- InvenTree.tasks.offload_task(part_tasks.check_missing_pricing, force_async=True)
+ InvenTree.tasks.offload_task(
+ part_tasks.check_missing_pricing, force_async=True, group='pricing'
+ )
def validate_currency_codes(value):
diff --git a/src/backend/InvenTree/common/files.py b/src/backend/InvenTree/common/files.py
index 37d85f46aa..2e1d8872ce 100644
--- a/src/backend/InvenTree/common/files.py
+++ b/src/backend/InvenTree/common/files.py
@@ -60,7 +60,7 @@ class FileManager:
file.seek(0)
else:
fmt = ext.upper()
- raise ValidationError(_(f'Unsupported file format: {fmt}'))
+ raise ValidationError(_('Unsupported file format') + f': {fmt}')
except UnicodeEncodeError:
raise ValidationError(_('Error reading file (invalid encoding)'))
diff --git a/src/backend/InvenTree/common/forms.py b/src/backend/InvenTree/common/forms.py
index 4800149013..113b471acc 100644
--- a/src/backend/InvenTree/common/forms.py
+++ b/src/backend/InvenTree/common/forms.py
@@ -22,8 +22,8 @@ class UploadFileForm(forms.Form):
if name:
# Update label and help_text with file name
- self.fields['file'].label = _(f'{name.title()} File')
- self.fields['file'].help_text = _(f'Select {name} file to upload')
+ self.fields['file'].label = name.title() + ' ' + _('File')
+ self.fields['file'].help_text = _('Select file to upload')
def clean_file(self):
"""Run tabular file validation.
@@ -65,7 +65,7 @@ class MatchFieldForm(forms.Form):
for col in columns:
field_name = col['name']
self.fields[field_name] = forms.ChoiceField(
- choices=[('', '-' * 10)] + headers_choices,
+ choices=[('', '-' * 10), *headers_choices],
required=False,
widget=forms.Select(attrs={'class': 'select fieldselect'}),
)
@@ -83,10 +83,7 @@ class MatchItemForm(forms.Form):
if 'file_manager' in kwargs:
file_manager = kwargs.pop('file_manager')
- if 'row_data' in kwargs:
- row_data = kwargs.pop('row_data')
- else:
- row_data = None
+ row_data = kwargs.pop('row_data') if 'row_data' in kwargs else None
super().__init__(*args, **kwargs)
@@ -134,7 +131,7 @@ class MatchItemForm(forms.Form):
item_match = row['match_' + col_guess]
# Set field select box
self.fields[field_name] = forms.ChoiceField(
- choices=[('', '-' * 10)] + item_options,
+ choices=[('', '-' * 10), *item_options],
required=False,
widget=forms.Select(attrs={'class': 'select bomselect'}),
)
@@ -154,7 +151,7 @@ class MatchItemForm(forms.Form):
field_name = 'item_select-' + str(row['index'])
# Set field select box
self.fields[field_name] = forms.ChoiceField(
- choices=[('', '-' * 10)] + item_options,
+ choices=[('', '-' * 10), *item_options],
required=False,
widget=forms.Select(attrs={'class': 'select bomselect'}),
)
diff --git a/src/backend/InvenTree/common/icons.py b/src/backend/InvenTree/common/icons.py
index 1ba6efe241..46492dd155 100644
--- a/src/backend/InvenTree/common/icons.py
+++ b/src/backend/InvenTree/common/icons.py
@@ -55,7 +55,7 @@ def get_icon_packs():
tabler_icons_path = Path(__file__).parent.parent.joinpath(
'InvenTree/static/tabler-icons/icons.json'
)
- with open(tabler_icons_path, 'r') as tabler_icons_file:
+ with open(tabler_icons_path, encoding='utf-8') as tabler_icons_file:
tabler_icons = json.load(tabler_icons_file)
icon_packs = [
diff --git a/src/backend/InvenTree/common/migrations/0005_auto_20190915_1256.py b/src/backend/InvenTree/common/migrations/0005_auto_20190915_1256.py
index 5b3205128d..2822fd82c3 100644
--- a/src/backend/InvenTree/common/migrations/0005_auto_20190915_1256.py
+++ b/src/backend/InvenTree/common/migrations/0005_auto_20190915_1256.py
@@ -18,6 +18,6 @@ class Migration(migrations.Migration):
migrations.AlterField(
model_name='inventreesetting',
name='key',
- field=models.CharField(help_text='Settings key (must be unique - case insensitive', max_length=50, unique=True),
+ field=models.CharField(help_text='Settings key', max_length=50, unique=True),
),
]
diff --git a/src/backend/InvenTree/common/migrations/0010_migrate_currency_setting.py b/src/backend/InvenTree/common/migrations/0010_migrate_currency_setting.py
index 116d139be8..8d84505f87 100644
--- a/src/backend/InvenTree/common/migrations/0010_migrate_currency_setting.py
+++ b/src/backend/InvenTree/common/migrations/0010_migrate_currency_setting.py
@@ -29,5 +29,5 @@ class Migration(migrations.Migration):
]
operations = [
- migrations.RunPython(set_default_currency),
+ migrations.RunPython(set_default_currency, reverse_code=migrations.RunPython.noop),
]
diff --git a/src/backend/InvenTree/common/migrations/0011_auto_20210722_2114.py b/src/backend/InvenTree/common/migrations/0011_auto_20210722_2114.py
index 388117f261..2d7d28343f 100644
--- a/src/backend/InvenTree/common/migrations/0011_auto_20210722_2114.py
+++ b/src/backend/InvenTree/common/migrations/0011_auto_20210722_2114.py
@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('value', models.CharField(blank=True, help_text='Settings value', max_length=200)),
- ('key', models.CharField(help_text='Settings key (must be unique - case insensitive', max_length=50)),
+ ('key', models.CharField(help_text='Settings key', max_length=50)),
('user', models.ForeignKey(blank=True, help_text='User', null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')),
],
options={
diff --git a/src/backend/InvenTree/common/migrations/0030_barcodescanresult.py b/src/backend/InvenTree/common/migrations/0030_barcodescanresult.py
new file mode 100644
index 0000000000..fe9ed14c6e
--- /dev/null
+++ b/src/backend/InvenTree/common/migrations/0030_barcodescanresult.py
@@ -0,0 +1,34 @@
+# Generated by Django 4.2.15 on 2024-09-21 06:05
+
+import InvenTree.models
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('common', '0029_inventreecustomuserstatemodel'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='BarcodeScanResult',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('data', models.CharField(help_text='Barcode data', max_length=250, verbose_name='Data')),
+ ('timestamp', models.DateTimeField(auto_now_add=True, help_text='Date and time of the barcode scan', verbose_name='Timestamp')),
+ ('endpoint', models.CharField(blank=True, help_text='URL endpoint which processed the barcode', max_length=250, null=True, verbose_name='Path')),
+ ('context', models.JSONField(blank=True, help_text='Context data for the barcode scan', max_length=1000, null=True, verbose_name='Context')),
+ ('response', models.JSONField(blank=True, help_text='Response data from the barcode scan', max_length=1000, null=True, verbose_name='Response')),
+ ('result', models.BooleanField(default=False, help_text='Was the barcode scan successful?', verbose_name='Result')),
+ ('user', models.ForeignKey(blank=True, help_text='User who scanned the barcode', null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='User')),
+ ],
+ options={
+ 'verbose_name': 'Barcode Scan',
+ },
+ bases=(InvenTree.models.PluginValidationMixin, models.Model),
+ ),
+ ]
diff --git a/src/backend/InvenTree/common/migrations/0031_auto_20241026_0024.py b/src/backend/InvenTree/common/migrations/0031_auto_20241026_0024.py
new file mode 100644
index 0000000000..75b6c86a67
--- /dev/null
+++ b/src/backend/InvenTree/common/migrations/0031_auto_20241026_0024.py
@@ -0,0 +1,39 @@
+# Generated by Django 4.2.16 on 2024-10-26 00:24
+
+from django.conf import settings
+from django.db import migrations
+
+import logging
+
+logger = logging.getLogger('inventree')
+
+
+def update_news_feed_urls(apps, schema_editor):
+ """Update and validate the news feed URLs."""
+
+ from common.models import NewsFeedEntry
+
+ n = 0
+
+ for entry in NewsFeedEntry.objects.all():
+ if entry.link and entry.link.startswith('/'):
+ entry.link = settings.INVENTREE_BASE_URL + entry.link
+ entry.save()
+ n += 1
+
+ if n > 0:
+ logger.info("Updated link for %s NewsFeedEntry objects", n)
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('common', '0030_barcodescanresult'),
+ ]
+
+ operations = [
+ migrations.RunPython(
+ update_news_feed_urls,
+ reverse_code=migrations.RunPython.noop
+ )
+ ]
diff --git a/src/backend/InvenTree/common/models.py b/src/backend/InvenTree/common/models.py
index 93dd5d11ce..fb57bfa67d 100644
--- a/src/backend/InvenTree/common/models.py
+++ b/src/backend/InvenTree/common/models.py
@@ -43,6 +43,7 @@ from taggit.managers import TaggableManager
import build.validators
import common.currency
import common.validators
+import InvenTree.exceptions
import InvenTree.fields
import InvenTree.helpers
import InvenTree.models
@@ -248,7 +249,7 @@ class BaseInvenTreeSetting(models.Model):
If a particular setting is not present, create it with the default value
"""
- cache_key = f'BUILD_DEFAULT_VALUES:{str(cls.__name__)}'
+ cache_key = f'BUILD_DEFAULT_VALUES:{cls.__name__!s}'
try:
if InvenTree.helpers.str2bool(cache.get(cache_key, False)):
@@ -331,7 +332,7 @@ 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}'
+ key = f'{cls.__name__!s}:{setting_key}'
for k, v in kwargs.items():
key += f'_{k}:{v}'
@@ -779,10 +780,7 @@ class BaseInvenTreeSetting(models.Model):
)
key = models.CharField(
- max_length=50,
- blank=False,
- unique=False,
- help_text=_('Settings key (must be unique - case insensitive)'),
+ max_length=50, blank=False, unique=False, help_text=_('Settings key')
)
value = models.CharField(
@@ -828,6 +826,9 @@ class BaseInvenTreeSetting(models.Model):
elif self.is_bool():
self.value = self.as_bool()
+ elif self.is_float():
+ self.value = self.as_float()
+
validator = self.__class__.get_setting_validator(
self.key, **self.get_filters_for_instance()
)
@@ -864,6 +865,14 @@ class BaseInvenTreeSetting(models.Model):
except (ValueError, TypeError):
raise ValidationError({'value': _('Value must be an integer value')})
+ # Floating point validator
+ if validator is float:
+ try:
+ # Coerce into a floating point value
+ value = float(value)
+ except (ValueError, TypeError):
+ raise ValidationError({'value': _('Value must be a valid number')})
+
# If a list of validators is supplied, iterate through each one
if type(validator) in [list, tuple]:
for v in validator:
@@ -875,10 +884,20 @@ class BaseInvenTreeSetting(models.Model):
if self.is_bool():
value = self.as_bool()
- if self.is_int():
+ elif self.is_int():
value = self.as_int()
- validator(value)
+ elif self.is_float():
+ value = self.as_float()
+
+ try:
+ validator(value)
+ except ValidationError as e:
+ raise e
+ except Exception:
+ raise ValidationError({
+ 'value': _('Value does not pass validation checks')
+ })
def validate_unique(self, exclude=None):
"""Ensure that the key:value pair is unique. In addition to the base validators, this ensures that the 'key' is unique, using a case-insensitive comparison.
@@ -972,6 +991,9 @@ class BaseInvenTreeSetting(models.Model):
if not model_name:
return None
+ # Enforce lower-case model name
+ model_name = str(model_name).strip().lower()
+
try:
(app, mdl) = model_name.strip().split('.')
except ValueError:
@@ -1071,6 +1093,39 @@ class BaseInvenTreeSetting(models.Model):
return False
+ def is_float(self):
+ """Check if the setting is required to be a float value."""
+ validator = self.__class__.get_setting_validator(
+ self.key, **self.get_filters_for_instance()
+ )
+
+ return self.__class__.validator_is_float(validator)
+
+ @classmethod
+ def validator_is_float(cls, validator):
+ """Return if validator is for float."""
+ if validator == float:
+ return True
+
+ if type(validator) in [list, tuple]:
+ for v in validator:
+ if v == float:
+ return True
+
+ return False
+
+ def as_float(self):
+ """Return the value of this setting converted to a float value.
+
+ If an error occurs, return the default value
+ """
+ try:
+ value = float(self.value)
+ except (ValueError, TypeError):
+ value = self.default_value
+
+ return value
+
def is_int(self):
"""Check if the setting is required to be an integer value."""
validator = self.__class__.get_setting_validator(
@@ -1398,6 +1453,18 @@ class InvenTreeSetting(BaseInvenTreeSetting):
'default': True,
'validator': bool,
},
+ 'BARCODE_STORE_RESULTS': {
+ 'name': _('Store Barcode Results'),
+ 'description': _('Store barcode scan results in the database'),
+ 'default': False,
+ 'validator': bool,
+ },
+ 'BARCODE_RESULTS_MAX_NUM': {
+ 'name': _('Barcode Scans Maximum Count'),
+ 'description': _('Maximum number of barcode scan results to store'),
+ 'default': 100,
+ 'validator': [int, MinValueValidator(1)],
+ },
'BARCODE_INPUT_DELAY': {
'name': _('Barcode Input Delay'),
'description': _('Barcode input processing delay time'),
@@ -1704,20 +1771,6 @@ class InvenTreeSetting(BaseInvenTreeSetting):
'default': 'A4',
'choices': report.helpers.report_page_size_options,
},
- 'REPORT_ENABLE_TEST_REPORT': {
- 'name': _('Enable Test Reports'),
- 'description': _('Enable generation of test reports'),
- 'default': True,
- 'validator': bool,
- },
- 'REPORT_ATTACH_TEST_REPORT': {
- 'name': _('Attach Test Reports'),
- 'description': _(
- 'When printing a Test Report, attach a copy of the Test Report to the associated Stock Item'
- ),
- 'default': False,
- 'validator': bool,
- },
'SERIAL_NUMBER_GLOBALLY_UNIQUE': {
'name': _('Globally Unique Serials'),
'description': _('Serial numbers for stock items must be globally unique'),
@@ -2062,7 +2115,7 @@ class InvenTreeSetting(BaseInvenTreeSetting):
'description': _(
'Check that all plugins are installed on startup - enable in container environments'
),
- 'default': str(os.getenv('INVENTREE_DOCKER', False)).lower()
+ 'default': str(os.getenv('INVENTREE_DOCKER', 'False')).lower()
in ['1', 'true'],
'validator': bool,
'requires_restart': True,
@@ -2109,6 +2162,13 @@ class InvenTreeSetting(BaseInvenTreeSetting):
'validator': bool,
'after_save': reload_plugin_registry,
},
+ 'ENABLE_PLUGINS_INTERFACE': {
+ 'name': _('Enable interface integration'),
+ 'description': _('Enable plugins to integrate into the user interface'),
+ 'default': False,
+ 'validator': bool,
+ 'after_save': reload_plugin_registry,
+ },
'PROJECT_CODES_ENABLED': {
'name': _('Enable project codes'),
'description': _('Enable project codes for tracking projects'),
@@ -2160,15 +2220,20 @@ class InvenTreeSetting(BaseInvenTreeSetting):
'default': False,
'validator': bool,
},
+ 'TEST_UPLOAD_CREATE_TEMPLATE': {
+ 'name': _('Create Template on Upload'),
+ 'description': _(
+ 'Create a new test template when uploading test data which does not match an existing template'
+ ),
+ 'default': True,
+ 'validator': bool,
+ },
}
typ = 'inventree'
key = models.CharField(
- max_length=50,
- blank=False,
- unique=True,
- help_text=_('Settings key (must be unique - case insensitive'),
+ max_length=50, blank=False, unique=True, help_text=_('Settings key')
)
def to_native_value(self):
@@ -2545,10 +2610,7 @@ class InvenTreeUserSetting(BaseInvenTreeSetting):
extra_unique_fields = ['user']
key = models.CharField(
- max_length=50,
- blank=False,
- unique=False,
- help_text=_('Settings key (must be unique - case insensitive'),
+ max_length=50, blank=False, unique=False, help_text=_('Settings key')
)
user = models.ForeignKey(
@@ -3092,13 +3154,10 @@ class CustomUnit(models.Model):
"""Ensure that the custom unit is unique."""
super().validate_unique(exclude)
- if self.symbol:
- if (
- CustomUnit.objects.filter(symbol=self.symbol)
- .exclude(pk=self.pk)
- .exists()
- ):
- raise ValidationError({'symbol': _('Unit symbol must be unique')})
+ if self.symbol and (
+ CustomUnit.objects.filter(symbol=self.symbol).exclude(pk=self.pk).exists()
+ ):
+ raise ValidationError({'symbol': _('Unit symbol must be unique')})
def clean(self):
"""Validate that the provided custom unit is indeed valid."""
@@ -3433,13 +3492,13 @@ class InvenTreeCustomUserStateModel(models.Model):
'reference_status': _('Reference status set not found')
})
ref_set = ref_set[0]
- if self.key in ref_set.keys():
+ if self.key in ref_set.keys(): # noqa: SIM118
raise ValidationError({
'key': _(
'Key must be different from the logical keys of the reference status'
)
})
- if self.logical_key not in ref_set.keys():
+ if self.logical_key not in ref_set.keys(): # noqa: SIM118
raise ValidationError({
'logical_key': _(
'Logical key must be in the logical keys of the reference status'
@@ -3447,3 +3506,67 @@ class InvenTreeCustomUserStateModel(models.Model):
})
return super().clean()
+
+
+class BarcodeScanResult(InvenTree.models.InvenTreeModel):
+ """Model for storing barcode scans results."""
+
+ BARCODE_SCAN_MAX_LEN = 250
+
+ class Meta:
+ """Model meta options."""
+
+ verbose_name = _('Barcode Scan')
+
+ data = models.CharField(
+ max_length=BARCODE_SCAN_MAX_LEN,
+ verbose_name=_('Data'),
+ help_text=_('Barcode data'),
+ blank=False,
+ null=False,
+ )
+
+ user = models.ForeignKey(
+ User,
+ on_delete=models.SET_NULL,
+ blank=True,
+ null=True,
+ verbose_name=_('User'),
+ help_text=_('User who scanned the barcode'),
+ )
+
+ timestamp = models.DateTimeField(
+ auto_now_add=True,
+ verbose_name=_('Timestamp'),
+ help_text=_('Date and time of the barcode scan'),
+ )
+
+ endpoint = models.CharField(
+ max_length=250,
+ verbose_name=_('Path'),
+ help_text=_('URL endpoint which processed the barcode'),
+ blank=True,
+ null=True,
+ )
+
+ context = models.JSONField(
+ max_length=1000,
+ verbose_name=_('Context'),
+ help_text=_('Context data for the barcode scan'),
+ blank=True,
+ null=True,
+ )
+
+ response = models.JSONField(
+ max_length=1000,
+ verbose_name=_('Response'),
+ help_text=_('Response data from the barcode scan'),
+ blank=True,
+ null=True,
+ )
+
+ result = models.BooleanField(
+ verbose_name=_('Result'),
+ help_text=_('Was the barcode scan successful?'),
+ default=False,
+ )
diff --git a/src/backend/InvenTree/common/notifications.py b/src/backend/InvenTree/common/notifications.py
index 7e3c4016f1..8988f845f3 100644
--- a/src/backend/InvenTree/common/notifications.py
+++ b/src/backend/InvenTree/common/notifications.py
@@ -10,7 +10,7 @@ from django.utils.translation import gettext_lazy as _
import common.models
import InvenTree.helpers
-from InvenTree.ready import isImportingData
+from InvenTree.ready import isImportingData, isRebuildingData
from plugin import registry
from plugin.models import NotificationUserSetting, PluginConfig
from users.models import Owner
@@ -143,11 +143,7 @@ class NotificationMethod:
# Check if method globally enabled
plg_instance = registry.get_plugin(plg_cls.NAME.lower())
- if plg_instance and not plg_instance.get_setting(self.GLOBAL_SETTING):
- return True
-
- # Lets go!
- return False
+ return plg_instance and not plg_instance.get_setting(self.GLOBAL_SETTING)
def usersetting(self, target):
"""Returns setting for this method for a given user."""
@@ -185,9 +181,20 @@ class MethodStorageClass:
Is initialized on startup as one instance named `storage` in this file.
"""
- liste = None
+ methods_list = None
user_settings = {}
+ @property
+ def methods(self):
+ """Return all available methods.
+
+ This is cached, and stored internally.
+ """
+ if self.methods_list is None:
+ self.collect()
+
+ return self.methods_list
+
def collect(self, selected_classes=None):
"""Collect all classes in the environment that are notification methods.
@@ -196,7 +203,8 @@ class MethodStorageClass:
Args:
selected_classes (class, optional): References to the classes that should be registered. Defaults to None.
"""
- logger.debug('Collecting notification methods')
+ logger.debug('Collecting notification methods...')
+
current_method = (
InvenTree.helpers.inheritors(NotificationMethod) - IGNORED_NOTIFICATION_CLS
)
@@ -219,8 +227,12 @@ class MethodStorageClass:
item.plugin = plugin() if plugin else None
filtered_list[ref] = item
- storage.liste = list(filtered_list.values())
- logger.info('Found %s notification methods', len(storage.liste))
+ storage.methods_list = list(filtered_list.values())
+
+ logger.info('Found %s notification methods', len(storage.methods_list))
+
+ for item in storage.methods_list:
+ logger.debug(' - %s', str(item))
def get_usersettings(self, user) -> list:
"""Returns all user settings for a specific user.
@@ -234,7 +246,8 @@ class MethodStorageClass:
list: All applicablae notification settings.
"""
methods = []
- for item in storage.liste:
+
+ for item in storage.methods:
if item.USER_SETTING:
new_key = f'NOTIFICATION_METHOD_{item.METHOD_NAME.upper()}'
@@ -250,6 +263,7 @@ class MethodStorageClass:
'icon': getattr(item, 'METHOD_ICON', ''),
'method': item.METHOD_NAME,
})
+
return methods
@@ -343,29 +357,33 @@ class InvenTreeNotificationBodies:
def trigger_notification(obj, category=None, obj_ref='pk', **kwargs):
"""Send out a notification."""
- targets = kwargs.get('targets', None)
- target_fnc = kwargs.get('target_fnc', None)
+ targets = kwargs.get('targets')
+ target_fnc = kwargs.get('target_fnc')
target_args = kwargs.get('target_args', [])
target_kwargs = kwargs.get('target_kwargs', {})
- target_exclude = kwargs.get('target_exclude', None)
+ target_exclude = kwargs.get('target_exclude')
context = kwargs.get('context', {})
- delivery_methods = kwargs.get('delivery_methods', None)
+ delivery_methods = kwargs.get('delivery_methods')
# Check if data is importing currently
- if isImportingData():
+ if isImportingData() or isRebuildingData():
return
# Resolve object reference
- obj_ref_value = getattr(obj, obj_ref)
+ refs = [obj_ref, 'pk', 'id', 'uid']
+
+ obj_ref_value = None
+
+ # Find the first reference that is available
+ for ref in refs:
+ if hasattr(obj, ref):
+ obj_ref_value = getattr(obj, ref)
+ break
# Try with some defaults
- if not obj_ref_value:
- obj_ref_value = getattr(obj, 'pk', None)
- if not obj_ref_value:
- obj_ref_value = getattr(obj, 'id', None)
if not obj_ref_value:
raise KeyError(
- f"Could not resolve an object reference for '{str(obj)}' with {obj_ref}, pk, id"
+ f"Could not resolve an object reference for '{obj!s}' with {','.join(set(refs))}"
)
# Check if we have notified recently...
@@ -422,7 +440,7 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs):
# Collect possible methods
if delivery_methods is None:
- delivery_methods = storage.liste or []
+ delivery_methods = storage.methods or []
else:
delivery_methods = delivery_methods - IGNORED_NOTIFICATION_CLS
@@ -432,14 +450,14 @@ def trigger_notification(obj, category=None, obj_ref='pk', **kwargs):
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) # noqa: LOG005
+ logger.error(error)
except Exception as error:
- logger.error(error) # noqa: LOG005
+ logger.error(error)
# Set delivery flag
common.models.NotificationEntry.notify(category, obj_ref_value)
else:
- logger.debug("No possible users for notification '%s'", category)
+ logger.info("No possible users for notification '%s'", category)
def trigger_superuser_notification(plugin: PluginConfig, msg: str):
diff --git a/src/backend/InvenTree/common/serializers.py b/src/backend/InvenTree/common/serializers.py
index 9f69bbffff..ed134d2707 100644
--- a/src/backend/InvenTree/common/serializers.py
+++ b/src/backend/InvenTree/common/serializers.py
@@ -234,12 +234,17 @@ class NotificationMessageSerializer(InvenTreeModelSerializer):
request = self.context['request']
if request.user and request.user.is_staff:
meta = obj.target_object._meta
- target['link'] = construct_absolute_url(
- reverse(
- f'admin:{meta.db_table}_change',
- kwargs={'object_id': obj.target_object_id},
+
+ try:
+ target['link'] = construct_absolute_url(
+ reverse(
+ f'admin:{meta.db_table}_change',
+ kwargs={'object_id': obj.target_object_id},
+ )
)
- )
+ except Exception:
+ # Do not crash if the reverse lookup fails
+ pass
return target
@@ -382,6 +387,22 @@ class CustomUnitSerializer(DataImportExportSerializerMixin, InvenTreeModelSerial
fields = ['pk', 'name', 'symbol', 'definition']
+class AllUnitListResponseSerializer(serializers.Serializer):
+ """Serializer for the AllUnitList."""
+
+ class Unit(serializers.Serializer):
+ """Serializer for the AllUnitListResponseSerializer."""
+
+ name = serializers.CharField()
+ is_alias = serializers.BooleanField()
+ compatible_units = serializers.ListField(child=serializers.CharField())
+ isdimensionless = serializers.BooleanField()
+
+ default_system = serializers.CharField()
+ available_systems = serializers.ListField(child=serializers.CharField())
+ available_units = Unit(many=True)
+
+
class ErrorMessageSerializer(InvenTreeModelSerializer):
"""DRF serializer for server error messages."""
@@ -574,9 +595,8 @@ class AttachmentSerializer(InvenTreeModelSerializer):
model_type = self.validated_data.get('model_type', None)
- if model_type is None:
- if self.instance:
- model_type = self.instance.model_type
+ if model_type is None and self.instance:
+ model_type = self.instance.model_type
# Ensure that the user has permission to attach files to the specified model
user = self.context.get('request').user
diff --git a/src/backend/InvenTree/common/tasks.py b/src/backend/InvenTree/common/tasks.py
index ffb67311b9..aa58f22cc2 100644
--- a/src/backend/InvenTree/common/tasks.py
+++ b/src/backend/InvenTree/common/tasks.py
@@ -70,6 +70,10 @@ def update_news_feed():
if entry.id in id_list:
continue
+ # Enforce proper links for the entries
+ if entry.link and str(entry.link).startswith('/'):
+ entry.link = settings.INVENTREE_BASE_URL + str(entry.link)
+
# Create entry
try:
NewsFeedEntry.objects.create(
diff --git a/src/backend/InvenTree/common/tests.py b/src/backend/InvenTree/common/tests.py
index 2d6279734d..cdf8ae4a59 100644
--- a/src/backend/InvenTree/common/tests.py
+++ b/src/backend/InvenTree/common/tests.py
@@ -23,7 +23,12 @@ import PIL
import common.validators
from common.settings import get_global_setting, set_global_setting
from InvenTree.helpers import str2bool
-from InvenTree.unit_test import InvenTreeAPITestCase, InvenTreeTestCase, PluginMixin
+from InvenTree.unit_test import (
+ AdminTestCase,
+ InvenTreeAPITestCase,
+ InvenTreeTestCase,
+ PluginMixin,
+)
from part.models import Part
from plugin import registry
from plugin.models import NotificationUserSetting
@@ -228,9 +233,6 @@ class SettingsTest(InvenTreeTestCase):
report_size_obj = InvenTreeSetting.get_setting_object(
'REPORT_DEFAULT_PAGE_SIZE'
)
- report_test_obj = InvenTreeSetting.get_setting_object(
- 'REPORT_ENABLE_TEST_REPORT'
- )
# check settings base fields
self.assertEqual(instance_obj.name, 'Server Instance Name')
@@ -260,7 +262,6 @@ class SettingsTest(InvenTreeTestCase):
# check setting_type
self.assertEqual(instance_obj.setting_type(), 'string')
- self.assertEqual(report_test_obj.setting_type(), 'boolean')
self.assertEqual(stale_days.setting_type(), 'integer')
# check as_int
@@ -269,9 +270,6 @@ class SettingsTest(InvenTreeTestCase):
instance_obj.as_int(), 'InvenTree'
) # not an int -> return default
- # check as_bool
- self.assertEqual(report_test_obj.as_bool(), True)
-
# check to_native_value
self.assertEqual(stale_days.to_native_value(), 0)
@@ -393,7 +391,7 @@ class SettingsTest(InvenTreeTestCase):
'before_save',
]
- for k in setting.keys():
+ for k in setting:
self.assertIn(k, allowed_keys)
# Check default value for boolean settings
@@ -431,7 +429,7 @@ class SettingsTest(InvenTreeTestCase):
@override_settings(SITE_URL=None, PLUGIN_TESTING=True, PLUGIN_TESTING_SETUP=True)
def test_defaults(self):
"""Populate the settings with default values."""
- for key in InvenTreeSetting.SETTINGS.keys():
+ for key in InvenTreeSetting.SETTINGS:
value = InvenTreeSetting.get_setting_default(key)
try:
@@ -520,7 +518,7 @@ 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('_')
+ k for k in InvenTreeSetting.SETTINGS if not k.startswith('_')
])
# Number of results should match the number of settings
@@ -832,11 +830,9 @@ class PluginSettingsApiTest(PluginMixin, InvenTreeAPITestCase):
def test_invalid_setting_key(self):
"""Test that an invalid setting key returns a 404."""
- ...
def test_uninitialized_setting(self):
"""Test that requesting an uninitialized setting creates the setting."""
- ...
class ErrorReportTest(InvenTreeAPITestCase):
@@ -934,7 +930,7 @@ class WebhookMessageTests(TestCase):
def test_bad_token(self):
"""Test that a wrong token is not working."""
response = self.client.post(
- self.url, content_type=CONTENT_TYPE_JSON, **{'HTTP_TOKEN': '1234567fghj'}
+ self.url, content_type=CONTENT_TYPE_JSON, HTTP_TOKEN='1234567fghj'
)
assert response.status_code == HTTPStatus.FORBIDDEN
@@ -957,7 +953,7 @@ class WebhookMessageTests(TestCase):
self.url,
data="{'this': 123}",
content_type=CONTENT_TYPE_JSON,
- **{'HTTP_TOKEN': str(self.endpoint_def.token)},
+ HTTP_TOKEN=str(self.endpoint_def.token),
)
assert response.status_code == HTTPStatus.NOT_ACCEPTABLE
@@ -1005,7 +1001,7 @@ class WebhookMessageTests(TestCase):
response = self.client.post(
self.url,
content_type=CONTENT_TYPE_JSON,
- **{'HTTP_TOKEN': str('68MXtc/OiXdA5e2Nq9hATEVrZFpLb3Zb0oau7n8s31I=')},
+ HTTP_TOKEN='68MXtc/OiXdA5e2Nq9hATEVrZFpLb3Zb0oau7n8s31I=',
)
assert response.status_code == HTTPStatus.OK
@@ -1020,7 +1016,7 @@ class WebhookMessageTests(TestCase):
self.url,
data={'this': 'is a message'},
content_type=CONTENT_TYPE_JSON,
- **{'HTTP_TOKEN': str(self.endpoint_def.token)},
+ HTTP_TOKEN=str(self.endpoint_def.token),
)
assert response.status_code == HTTPStatus.OK
@@ -1504,6 +1500,14 @@ class CustomUnitAPITest(InvenTreeAPITestCase):
for name in invalid_name_values:
self.patch(url, {'name': name}, expected_code=400)
+ def test_api(self):
+ """Test the CustomUnit API."""
+ response = self.get(reverse('api-all-unit-list'))
+ self.assertIn('default_system', response.data)
+ self.assertIn('available_systems', response.data)
+ self.assertIn('available_units', response.data)
+ self.assertEqual(len(response.data['available_units']) > 100, True)
+
class ContentTypeAPITest(InvenTreeAPITestCase):
"""Unit tests for the ContentType API."""
@@ -1677,3 +1681,14 @@ class CustomStatusTest(TestCase):
self.assertEqual(
instance.__str__(), 'Stock Item (StockStatus): OK - advanced | 11 (10)'
)
+
+
+class AdminTest(AdminTestCase):
+ """Tests for the admin interface integration."""
+
+ def test_admin(self):
+ """Test the admin URL."""
+ self.helper(
+ model=Attachment,
+ model_kwargs={'link': 'https://aa.example.org', 'model_id': 1},
+ )
diff --git a/src/backend/InvenTree/common/views.py b/src/backend/InvenTree/common/views.py
index 8f1fbe0e40..53079c1a55 100644
--- a/src/backend/InvenTree/common/views.py
+++ b/src/backend/InvenTree/common/views.py
@@ -312,7 +312,6 @@ class FileManagementFormView(MultiStepFormView):
This method is very specific to the type of data found in the file,
therefore overwrite it in the subclass.
"""
- pass
def get_clean_items(self):
"""Returns dict with all cleaned values."""
@@ -363,10 +362,7 @@ class FileManagementFormView(MultiStepFormView):
duplicates = []
for col in self.column_names:
- if col in self.column_selections:
- guess = self.column_selections[col]
- else:
- guess = None
+ guess = self.column_selections.get(col, None)
if guess:
n = list(self.column_selections.values()).count(
diff --git a/src/backend/InvenTree/company/api.py b/src/backend/InvenTree/company/api.py
index b0b9fcfe98..5765b11b85 100644
--- a/src/backend/InvenTree/company/api.py
+++ b/src/backend/InvenTree/company/api.py
@@ -436,6 +436,13 @@ class SupplierPriceBreakList(ListCreateAPI):
serializer_class = SupplierPriceBreakSerializer
filterset_class = SupplierPriceBreakFilter
+ def get_queryset(self):
+ """Return annotated queryset for the SupplierPriceBreak list endpoint."""
+ queryset = super().get_queryset()
+ queryset = SupplierPriceBreakSerializer.annotate_queryset(queryset)
+
+ return queryset
+
def get_serializer(self, *args, **kwargs):
"""Return serializer instance for this endpoint."""
try:
@@ -468,6 +475,13 @@ class SupplierPriceBreakDetail(RetrieveUpdateDestroyAPI):
queryset = SupplierPriceBreak.objects.all()
serializer_class = SupplierPriceBreakSerializer
+ def get_queryset(self):
+ """Return annotated queryset for the SupplierPriceBreak list endpoint."""
+ queryset = super().get_queryset()
+ queryset = SupplierPriceBreakSerializer.annotate_queryset(queryset)
+
+ return queryset
+
manufacturer_part_api_urls = [
path(
diff --git a/src/backend/InvenTree/company/apps.py b/src/backend/InvenTree/company/apps.py
index 5d2443e47e..af37fb3095 100644
--- a/src/backend/InvenTree/company/apps.py
+++ b/src/backend/InvenTree/company/apps.py
@@ -10,4 +10,3 @@ class CompanyConfig(AppConfig):
def ready(self):
"""This function is called whenever the Company app is loaded."""
- pass
diff --git a/src/backend/InvenTree/company/models.py b/src/backend/InvenTree/company/models.py
index 9e1c878c57..ec621b0e7a 100644
--- a/src/backend/InvenTree/company/models.py
+++ b/src/backend/InvenTree/company/models.py
@@ -46,10 +46,7 @@ def rename_company_image(instance, filename):
"""
base = 'company_images'
- if filename.count('.') > 0:
- ext = filename.split('.')[-1]
- else:
- ext = ''
+ ext = filename.split('.')[-1] if filename.count('.') > 0 else ''
fn = f'company_{instance.pk}_img'
@@ -1052,7 +1049,10 @@ class SupplierPriceBreak(common.models.PriceBreak):
)
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 (
+ InvenTree.ready.canAppAccessDatabase(allow_test=settings.TESTING_PRICING)
+ and not InvenTree.ready.isImportingData()
+ ):
if instance.part and instance.part.part:
instance.part.part.schedule_pricing_update(create=True)
@@ -1064,6 +1064,9 @@ def after_save_supplier_price(sender, instance, created, **kwargs):
)
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 (
+ InvenTree.ready.canAppAccessDatabase(allow_test=settings.TESTING_PRICING)
+ and not InvenTree.ready.isImportingData()
+ ):
if instance.part and instance.part.part:
instance.part.part.schedule_pricing_update(create=False)
diff --git a/src/backend/InvenTree/company/serializers.py b/src/backend/InvenTree/company/serializers.py
index ba6d845c0a..da763f8d7b 100644
--- a/src/backend/InvenTree/company/serializers.py
+++ b/src/backend/InvenTree/company/serializers.py
@@ -512,6 +512,13 @@ class SupplierPriceBreakSerializer(
if not part_detail:
self.fields.pop('part_detail', None)
+ @staticmethod
+ def annotate_queryset(queryset):
+ """Prefetch related fields for the queryset."""
+ queryset = queryset.select_related('part', 'part__supplier', 'part__part')
+
+ return queryset
+
quantity = InvenTreeDecimalField()
price = InvenTreeMoneySerializer(allow_null=True, required=True, label=_('Price'))
diff --git a/src/backend/InvenTree/company/templates/company/supplier_part.html b/src/backend/InvenTree/company/templates/company/supplier_part.html
index b723f1ef8b..daf2ca99d8 100644
--- a/src/backend/InvenTree/company/templates/company/supplier_part.html
+++ b/src/backend/InvenTree/company/templates/company/supplier_part.html
@@ -1,6 +1,7 @@
{% extends "page_base.html" %}
{% load static %}
{% load i18n %}
+{% load barcode %}
{% load inventree_extras %}
{% block page_title %}
@@ -303,7 +304,7 @@ onPanelLoad('supplier-part-notes', function() {
$("#show-qr-code").click(function() {
showQRDialog(
'{% trans "Supplier Part QR Code" escape %}',
- '{{ part.barcode }}'
+ `{% clean_barcode part.barcode %}`
);
});
diff --git a/src/backend/InvenTree/company/test_api.py b/src/backend/InvenTree/company/test_api.py
index 4774c9d1a9..63d9a4d0ff 100644
--- a/src/backend/InvenTree/company/test_api.py
+++ b/src/backend/InvenTree/company/test_api.py
@@ -154,6 +154,52 @@ class CompanyTest(InvenTreeAPITestCase):
len(self.get(url, data={'active': False}, expected_code=200).data), 1
)
+ def test_company_notes(self):
+ """Test the markdown 'notes' field for the Company model."""
+ pk = Company.objects.first().pk
+ url = reverse('api-company-detail', kwargs={'pk': pk})
+
+ # Attempt to inject malicious markdown into the "notes" field
+ xss = [
+ '[Click me](javascript:alert(123))',
+ ')',
+ ')',
+ ]
+
+ for note in xss:
+ response = self.patch(url, {'notes': note}, expected_code=400)
+
+ self.assertIn(
+ 'Data contains prohibited markdown content', str(response.data)
+ )
+
+ # Tests with disallowed tags
+ invalid_tags = [
+ '',
+ 'A disallowed tag! ',
+ ]
+
+ for note in invalid_tags:
+ response = self.patch(url, {'notes': note}, expected_code=400)
+
+ self.assertIn('Remove HTML tags from this value', str(response.data))
+
+ # The following markdown is safe, and should be accepted
+ good = [
+ 'This is a **bold** statement',
+ 'This is a *italic* statement',
+ 'This is a [link](https://www.google.com)',
+ 'This is an ',
+ 'This is a `code` block',
+ 'This text has ~~strikethrough~~ formatting',
+ 'This text has a raw link - https://www.google.com - and should still pass the test',
+ ]
+
+ for note in good:
+ response = self.patch(url, {'notes': note}, expected_code=200)
+
+ self.assertEqual(response.data['notes'], note)
+
class ContactTest(InvenTreeAPITestCase):
"""Tests for the Contact models."""
diff --git a/src/backend/InvenTree/config_template.yaml b/src/backend/InvenTree/config_template.yaml
index 4ef1bf42bf..fa597167a1 100644
--- a/src/backend/InvenTree/config_template.yaml
+++ b/src/backend/InvenTree/config_template.yaml
@@ -117,7 +117,7 @@ use_x_forwarded_port: false
# Cookie settings
cookie:
secure: false
- samesite: none
+ samesite: false
# Cross Origin Resource Sharing (CORS) settings (see https://github.com/adamchainz/django-cors-headers)
cors:
diff --git a/src/backend/InvenTree/generic/states/__init__.py b/src/backend/InvenTree/generic/states/__init__.py
index a13139b5ff..0389499907 100644
--- a/src/backend/InvenTree/generic/states/__init__.py
+++ b/src/backend/InvenTree/generic/states/__init__.py
@@ -11,8 +11,8 @@ from .transition import StateTransitionMixin, TransitionMethod, storage
__all__ = [
'ColorEnum',
- 'StatusCode',
- 'storage',
- 'TransitionMethod',
'StateTransitionMixin',
+ 'StatusCode',
+ 'TransitionMethod',
+ 'storage',
]
diff --git a/src/backend/InvenTree/generic/states/custom.py b/src/backend/InvenTree/generic/states/custom.py
index 2539eb550e..8fc8948c28 100644
--- a/src/backend/InvenTree/generic/states/custom.py
+++ b/src/backend/InvenTree/generic/states/custom.py
@@ -33,7 +33,8 @@ def state_color_mappings():
def state_reference_mappings():
"""Return a list of custom user state references."""
- return [(a.__name__, a.__name__) for a in get_custom_classes(include_custom=False)]
+ classes = get_custom_classes(include_custom=False)
+ return [(a.__name__, a.__name__) for a in sorted(classes, key=lambda x: x.__name__)]
def get_logical_value(value, model: str):
diff --git a/src/backend/InvenTree/generic/states/fields.py b/src/backend/InvenTree/generic/states/fields.py
index 99717d4884..7f67f5c14b 100644
--- a/src/backend/InvenTree/generic/states/fields.py
+++ b/src/backend/InvenTree/generic/states/fields.py
@@ -41,7 +41,7 @@ class CustomChoiceField(serializers.ChoiceField):
if self.is_custom:
return logical.key
return logical.logical_key
- except ObjectDoesNotExist:
+ except (ObjectDoesNotExist, Exception):
raise serializers.ValidationError('Invalid choice')
def get_field_info(self, field, field_info):
@@ -145,24 +145,32 @@ class InvenTreeCustomStatusSerializerMixin:
def update(self, instance, validated_data):
"""Ensure the custom field is updated if the leader was changed."""
self.gather_custom_fields()
+ # Mirror values from leader to follower
for field in self._custom_fields_leader:
+ follower_field_name = f'{field}_custom_key'
if (
field in self.initial_data
and self.instance
and self.initial_data[field]
- != getattr(self.instance, f'{field}_custom_key', None)
+ != getattr(self.instance, follower_field_name, None)
):
- setattr(self.instance, f'{field}_custom_key', self.initial_data[field])
+ setattr(self.instance, follower_field_name, self.initial_data[field])
+
+ # Mirror values from follower to leader
for field in self._custom_fields_follower:
- if (
- field in validated_data
- and field.replace('_custom_key', '') not in self.initial_data
- ):
- reference = get_logical_value(
- validated_data[field],
- self.fields[field].choice_mdl._meta.model_name,
- )
- validated_data[field.replace('_custom_key', '')] = reference.logical_key
+ leader_field_name = field.replace('_custom_key', '')
+ if field in validated_data and leader_field_name not in self.initial_data:
+ try:
+ reference = get_logical_value(
+ validated_data[field],
+ self.fields[field].choice_mdl._meta.model_name,
+ )
+ validated_data[leader_field_name] = reference.logical_key
+ except (ObjectDoesNotExist, Exception):
+ if validated_data[field] in self.fields[leader_field_name].choices:
+ validated_data[leader_field_name] = validated_data[field]
+ else:
+ raise serializers.ValidationError('Invalid choice')
return super().update(instance, validated_data)
def to_representation(self, instance):
diff --git a/src/backend/InvenTree/generic/states/states.py b/src/backend/InvenTree/generic/states/states.py
index 1ac7de1174..966ed76210 100644
--- a/src/backend/InvenTree/generic/states/states.py
+++ b/src/backend/InvenTree/generic/states/states.py
@@ -5,7 +5,7 @@ import re
from enum import Enum
-class BaseEnum(enum.IntEnum):
+class BaseEnum(enum.IntEnum): # noqa: PLW1641
"""An `Enum` capabile of having its members have docstrings.
Based on https://stackoverflow.com/questions/19330460/how-do-i-put-docstrings-on-enums
@@ -100,9 +100,7 @@ class StatusCode(BaseEnum):
return False
if callable(value):
return False
- if not isinstance(value.value, int):
- return False
- return True
+ return isinstance(value.value, int)
@classmethod
def values(cls, key=None):
diff --git a/src/backend/InvenTree/generic/states/tests.py b/src/backend/InvenTree/generic/states/tests.py
index dbba2d14b2..f936cd8012 100644
--- a/src/backend/InvenTree/generic/states/tests.py
+++ b/src/backend/InvenTree/generic/states/tests.py
@@ -27,7 +27,6 @@ class GeneralStatus(StatusCode):
def GHI(self): # This should be ignored
"""A invalid function."""
- ...
class GeneralStateTest(InvenTreeTestCase):
diff --git a/src/backend/InvenTree/generic/templatetags/generic.py b/src/backend/InvenTree/generic/templatetags/generic.py
index e57bdec201..9ad061dfd7 100644
--- a/src/backend/InvenTree/generic/templatetags/generic.py
+++ b/src/backend/InvenTree/generic/templatetags/generic.py
@@ -3,6 +3,6 @@
from django import template
register = template.Library()
-from generic.states.tags import status_label # noqa: E402
+from generic.states.tags import status_label
-__all__ = [status_label]
+__all__ = ['status_label']
diff --git a/src/backend/InvenTree/importer/api.py b/src/backend/InvenTree/importer/api.py
index 6eb4815784..b914e068cb 100644
--- a/src/backend/InvenTree/importer/api.py
+++ b/src/backend/InvenTree/importer/api.py
@@ -5,6 +5,7 @@ from django.urls import include, path
from drf_spectacular.utils import extend_schema
from rest_framework import permissions
+from rest_framework.exceptions import PermissionDenied
from rest_framework.response import Response
from rest_framework.views import APIView
@@ -20,6 +21,39 @@ from InvenTree.mixins import (
RetrieveUpdateAPI,
RetrieveUpdateDestroyAPI,
)
+from users.models import check_user_permission
+
+
+class DataImporterPermission(permissions.BasePermission):
+ """Mixin class for determining if the user has correct permissions."""
+
+ def has_permission(self, request, view):
+ """Class level permission checks are handled via permissions.IsAuthenticated."""
+ return True
+
+ def has_object_permission(self, request, view, obj):
+ """Check if the user has permission to access the imported object."""
+ # For safe methods (GET, HEAD, OPTIONS), allow access
+ if request.method in permissions.SAFE_METHODS:
+ return True
+
+ if isinstance(obj, importer.models.DataImportSession):
+ session = obj
+ else:
+ session = getattr(obj, 'session', None)
+
+ if session:
+ if model_class := session.model_class:
+ return check_user_permission(request.user, model_class, 'change')
+
+ return True
+
+
+class DataImporterPermissionMixin:
+ """Mixin class for checking permissions on DataImporter objects."""
+
+ # Default permissions: User must be authenticated
+ permission_classes = [permissions.IsAuthenticated, DataImporterPermission]
class DataImporterModelList(APIView):
@@ -44,11 +78,9 @@ class DataImporterModelList(APIView):
return Response(models)
-class DataImportSessionList(BulkDeleteMixin, ListCreateAPI):
+class DataImportSessionList(DataImporterPermission, BulkDeleteMixin, ListCreateAPI):
"""API endpoint for accessing a list of DataImportSession objects."""
- permission_classes = [permissions.IsAuthenticated]
-
queryset = importer.models.DataImportSession.objects.all()
serializer_class = importer.serializers.DataImportSessionSerializer
@@ -59,7 +91,7 @@ class DataImportSessionList(BulkDeleteMixin, ListCreateAPI):
ordering_fields = ['timestamp', 'status', 'model_type']
-class DataImportSessionDetail(RetrieveUpdateDestroyAPI):
+class DataImportSessionDetail(DataImporterPermission, RetrieveUpdateDestroyAPI):
"""Detail endpoint for a single DataImportSession object."""
queryset = importer.models.DataImportSession.objects.all()
@@ -78,13 +110,18 @@ class DataImportSessionAcceptFields(APIView):
"""Accept the field mapping for a DataImportSession."""
session = get_object_or_404(importer.models.DataImportSession, pk=pk)
+ # Check that the user has permission to accept the field mapping
+ if model_class := session.model_class:
+ if not check_user_permission(request.user, model_class, 'change'):
+ raise PermissionDenied()
+
# Attempt to accept the mapping (may raise an exception if the mapping is invalid)
session.accept_mapping()
return Response(importer.serializers.DataImportSessionSerializer(session).data)
-class DataImportSessionAcceptRows(CreateAPI):
+class DataImportSessionAcceptRows(DataImporterPermission, CreateAPI):
"""API endpoint to accept the rows for a DataImportSession."""
queryset = importer.models.DataImportSession.objects.all()
@@ -105,7 +142,7 @@ class DataImportSessionAcceptRows(CreateAPI):
return ctx
-class DataImportColumnMappingList(ListAPI):
+class DataImportColumnMappingList(DataImporterPermissionMixin, ListAPI):
"""API endpoint for accessing a list of DataImportColumnMap objects."""
queryset = importer.models.DataImportColumnMap.objects.all()
@@ -116,14 +153,14 @@ class DataImportColumnMappingList(ListAPI):
filterset_fields = ['session']
-class DataImportColumnMappingDetail(RetrieveUpdateAPI):
+class DataImportColumnMappingDetail(DataImporterPermissionMixin, RetrieveUpdateAPI):
"""Detail endpoint for a single DataImportColumnMap object."""
queryset = importer.models.DataImportColumnMap.objects.all()
serializer_class = importer.serializers.DataImportColumnMapSerializer
-class DataImportRowList(BulkDeleteMixin, ListAPI):
+class DataImportRowList(DataImporterPermission, BulkDeleteMixin, ListAPI):
"""API endpoint for accessing a list of DataImportRow objects."""
queryset = importer.models.DataImportRow.objects.all()
@@ -138,7 +175,7 @@ class DataImportRowList(BulkDeleteMixin, ListAPI):
ordering = 'row_index'
-class DataImportRowDetail(RetrieveUpdateDestroyAPI):
+class DataImportRowDetail(DataImporterPermission, RetrieveUpdateDestroyAPI):
"""Detail endpoint for a single DataImportRow object."""
queryset = importer.models.DataImportRow.objects.all()
diff --git a/src/backend/InvenTree/importer/mixins.py b/src/backend/InvenTree/importer/mixins.py
index e0e064afc4..285a697155 100644
--- a/src/backend/InvenTree/importer/mixins.py
+++ b/src/backend/InvenTree/importer/mixins.py
@@ -213,8 +213,6 @@ class DataImportExportSerializerMixin(
):
"""Mixin class for adding data import/export functionality to a DRF serializer."""
- pass
-
class DataExportViewMixin:
"""Mixin class for exporting a dataset via the API.
diff --git a/src/backend/InvenTree/importer/models.py b/src/backend/InvenTree/importer/models.py
index 219e1ac600..d0c5e67cbc 100644
--- a/src/backend/InvenTree/importer/models.py
+++ b/src/backend/InvenTree/importer/models.py
@@ -2,6 +2,7 @@
import json
import logging
+from typing import Optional
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError as DjangoValidationError
@@ -117,11 +118,19 @@ class DataImportSession(models.Model):
"""
mapping = {}
- for map in self.column_mappings.all():
- mapping[map.field] = map.column
+ for i in self.column_mappings.all():
+ mapping[i.field] = i.column
return mapping
+ @property
+ def model_class(self):
+ """Return the model class for this importer."""
+ serializer = self.serializer_class
+
+ if serializer:
+ return serializer.Meta.model
+
@property
def serializer_class(self):
"""Return the serializer class for this importer."""
@@ -209,13 +218,13 @@ class DataImportSession(models.Model):
missing_fields = []
- for field in required_fields.keys():
+ for field in required_fields:
# An override value exists
if field in field_overrides:
continue
# A default value exists
- if field in field_defaults and field_defaults[field]:
+ if field_defaults.get(field):
continue
# The field has been mapped to a data column
@@ -537,7 +546,10 @@ class DataImportRow(models.Model):
return overrides
def extract_data(
- self, available_fields: dict = None, field_mapping: dict = None, commit=True
+ self,
+ available_fields: Optional[dict] = None,
+ field_mapping: Optional[dict] = None,
+ commit=True,
):
"""Extract row data from the provided data dictionary."""
if not field_mapping:
diff --git a/src/backend/InvenTree/importer/operations.py b/src/backend/InvenTree/importer/operations.py
index 7b9806d07b..6afa7d08c4 100644
--- a/src/backend/InvenTree/importer/operations.py
+++ b/src/backend/InvenTree/importer/operations.py
@@ -36,7 +36,7 @@ def load_data_file(data_file, file_format=None):
try:
data = file_object.read()
- except (IOError, FileNotFoundError):
+ except (OSError, FileNotFoundError):
raise ValidationError(_('Failed to open data file'))
# Excel formats expect binary data
@@ -113,9 +113,8 @@ def get_field_label(field) -> str:
Returns:
str: Field label
"""
- if field:
- if label := getattr(field, 'label', None):
- return label
+ if field and (label := getattr(field, 'label', None)):
+ return label
# TODO: Check if the field is a model field
diff --git a/src/backend/InvenTree/importer/tests.py b/src/backend/InvenTree/importer/tests.py
index 179d36dad9..45ea5052c7 100644
--- a/src/backend/InvenTree/importer/tests.py
+++ b/src/backend/InvenTree/importer/tests.py
@@ -4,11 +4,27 @@ import os
from django.core.files.base import ContentFile
-from importer.models import DataImportSession
-from InvenTree.unit_test import InvenTreeTestCase
+from importer.models import DataImportRow, DataImportSession
+from InvenTree.unit_test import AdminTestCase, InvenTreeTestCase
-class ImporterTest(InvenTreeTestCase):
+class ImporterMixin:
+ """Helpers for import tests."""
+
+ def helper_file(self):
+ """Return test data."""
+ fn = os.path.join(os.path.dirname(__file__), 'test_data', 'companies.csv')
+
+ with open(fn, encoding='utf-8') as input_file:
+ data = input_file.read()
+ return data
+
+ def helper_content(self):
+ """Return content file."""
+ return ContentFile(self.helper_file(), 'companies.csv')
+
+
+class ImporterTest(ImporterMixin, InvenTreeTestCase):
"""Basic tests for file imports."""
def test_import_session(self):
@@ -17,13 +33,8 @@ class ImporterTest(InvenTreeTestCase):
n = Company.objects.count()
- fn = os.path.join(os.path.dirname(__file__), 'test_data', 'companies.csv')
-
- with open(fn, 'r') as input_file:
- data = input_file.read()
-
session = DataImportSession.objects.create(
- data_file=ContentFile(data, 'companies.csv'), model_type='company'
+ data_file=self.helper_content(), model_type='company'
)
session.extract_columns()
@@ -61,4 +72,15 @@ class ImporterTest(InvenTreeTestCase):
def test_field_defaults(self):
"""Test default field values."""
- ...
+
+
+class AdminTest(ImporterMixin, AdminTestCase):
+ """Tests for the admin interface integration."""
+
+ def test_admin(self):
+ """Test the admin URL."""
+ session = self.helper(
+ model=DataImportSession,
+ model_kwargs={'data_file': self.helper_content(), 'model_type': 'company'},
+ )
+ self.helper(model=DataImportRow, model_kwargs={'session_id': session.id})
diff --git a/src/backend/InvenTree/importer/validators.py b/src/backend/InvenTree/importer/validators.py
index 166c30acc6..4c72f43615 100644
--- a/src/backend/InvenTree/importer/validators.py
+++ b/src/backend/InvenTree/importer/validators.py
@@ -36,7 +36,7 @@ def validate_importer_model_type(value):
"""Validate that the given model type is supported for importing."""
from importer.registry import supported_models
- if value not in supported_models().keys():
+ if value not in supported_models():
raise ValidationError(f"Unsupported model type '{value}'")
diff --git a/src/backend/InvenTree/locale/ar/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ar/LC_MESSAGES/django.po
index 41e7bdce1a..d3d7fa1ed6 100644
--- a/src/backend/InvenTree/locale/ar/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/ar/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Language: ar_SA\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: ar\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "نقطة نهاية API غير موجودة"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "المستخدم ليس لديه الصلاحية لعرض هذا النموذج"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "الوحدة المقدمة غير صالحة ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "لم يتم تقديم قيمة"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "تعذّر تحويل {original} إلى {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr "الكمية المقدمة غير صحيحة"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "الكمية المقدمة غير صحيحة ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "يمكن العثور على تفاصيل الخطأ في لوحة التحكم"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "أدخل التاريخ"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "ملاحظات"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "القيمة '{name}' لا تظهر في تنسيق النمط"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "القيمة المقدمة لا تتطابق مع النمط المطلوب: "
@@ -126,403 +134,415 @@ msgstr "يجب عليك كتابة نفس البريد الإلكتروني كل
#: InvenTree/forms.py:221
msgid "MFA Registration is disabled."
-msgstr ""
+msgstr "تسجيل MFA معطل."
#: InvenTree/forms.py:259 InvenTree/forms.py:267
msgid "The provided primary email address is not valid."
msgstr "عنوان البريد الإلكتروني الرئيسي المقدم غير صالح."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "لم تتم الموافقة على نطاق البريد الإلكتروني المقدم."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "التسجيل معطل."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "الكمية المقدمة غير صحيحة"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "سلسلة الرقم التسلسلي فارغة"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "تكرار التسلسل"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
-msgstr ""
+msgstr "نطاق المجموعة {group} يتجاوز الكَمّيَّة المسموح بها ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
-msgstr ""
+msgstr "لم يتم العثور على أرقام متسلسلة"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr ""
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr ""
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
-msgstr ""
+msgstr "العربيّة"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr ""
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr ""
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr ""
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr ""
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr ""
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr ""
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr ""
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr ""
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
-
-#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/locales.py:39
-msgid "Norwegian"
+msgid "Lithuanian"
msgstr ""
#: InvenTree/locales.py:40
-msgid "Polish"
+msgid "Latvian"
msgstr ""
#: InvenTree/locales.py:41
-msgid "Portuguese"
+msgid "Dutch"
msgstr ""
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
+msgid "Norwegian"
msgstr ""
#: InvenTree/locales.py:43
-msgid "Romanian"
+msgid "Polish"
msgstr ""
#: InvenTree/locales.py:44
-msgid "Russian"
+msgid "Portuguese"
msgstr ""
#: InvenTree/locales.py:45
-msgid "Slovak"
+msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/locales.py:46
-msgid "Slovenian"
+msgid "Romanian"
msgstr ""
#: InvenTree/locales.py:47
-msgid "Serbian"
+msgid "Russian"
msgstr ""
#: InvenTree/locales.py:48
-msgid "Swedish"
+msgid "Slovak"
msgstr ""
#: InvenTree/locales.py:49
-msgid "Thai"
+msgid "Slovenian"
msgstr ""
#: InvenTree/locales.py:50
-msgid "Turkish"
+msgid "Serbian"
msgstr ""
#: InvenTree/locales.py:51
-msgid "Ukrainian"
+msgid "Swedish"
msgstr ""
#: InvenTree/locales.py:52
-msgid "Vietnamese"
+msgid "Thai"
msgstr ""
#: InvenTree/locales.py:53
-msgid "Chinese (Simplified)"
+msgid "Turkish"
msgstr ""
#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po
index c3f135752c..86bf8f3b72 100644
--- a/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/bg/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: bg\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "Не е намерена крайна точка на API"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Потребителя няма нужното разрешение, за да вижда този модел"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Не е зададена стойност"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Преобразуването на {original} в {unit} не беше успешно"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "Зададено е недопустимо количество"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Въведена е недопустима стойност"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Зададено е недопустимо количество ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Подробности за грешката могат да се намерят в администраторския панел"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Въведи дата"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Бележки"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Значението '{name}' не отговаря на шаблона"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Въведеното значение не отговаря на задължителния шаблон: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Въведената основна електронна поща е невалидна."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Въведеният домейн на електронната поща не е утвърден."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Регистрацията е деактивирана."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Въведена е недопустима стойност"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Липсва сериен номер"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Повтарящ се сериен номер"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Невалиден диапазон от групи: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Не са открити серийни номера"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Премахнете HTML маркерите от тази стойност"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Грешка при съединението"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Сървърът отговари с невалиден статусен код"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Възникна изключение"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Сървърът отговори с невалидна стойност за дължината на съдържанието (Content-Length)"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Размерът на изображението е твърде голям"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Сваляното на изображение превиши максималния размер"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Отдалеченият сървър върна празен отговор"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr ""
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr ""
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr ""
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr ""
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr ""
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Хинди"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Унгарски"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Италиански"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Японски"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Корейски"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Нидерландски"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Норвежки"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Полски"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Португалски"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Португалски (Бразилия)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr ""
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Руски"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr ""
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Словенски"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr ""
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Шведски"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Тайландски"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Турски"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr ""
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Виетнамски"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Китайски (опростен)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Китайски (традиционен)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Част"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Част"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Потребител"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Изпратено"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Изгубен"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Върнат"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Изпълнява се"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Цялостна наличност"
@@ -6641,789 +6854,789 @@ msgstr "Цялостна наличност"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Наличност"
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Място в склада"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Места в склада"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Наличността е преброена"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po
index 7e1e045d22..9657ed0dc9 100644
--- a/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/cs/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: cs\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API endpoint nebyl nalezen"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Uživatel nemá právo zobrazit tento model"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Zadaná neplatná jednotka ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Není k dispozici žádná hodnota"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Nelze převést {original} na {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr "Vyplněno neplatné množství"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Vyplněno neplatné množství ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Podrobnosti o chybě lze nalézt v panelu administrace"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Zadejte datum"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Poznámky"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Hodnota '{name}' neodpovídá formátu vzoru"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Poskytnutá hodnota neodpovídá požadovanému vzoru: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Zadaná primární e-mailová adresa je neplatná."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Zadaná e-mailová doména není povolena."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registrace vypnuta."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Vyplněno neplatné množství"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Nevyplněné výrobní číslo"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplicitní výrobní číslo"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Neplatný rozsah skupiny: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Rozsah skupiny {group} překračuje povolené množství ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Neplatná sekvence skupiny: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Nenalezena žádná výrobní čísla"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Počet jedinečných sériových čísel ({len(serials)}) musí odpovídat množství ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Odstranit HTML tagy z této hodnoty"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Chyba spojení"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Server odpověděl s neplatným stavovým kódem"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Došlo k výjimce"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Server odpověděl s neplatnou hodnotou Content-Length"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Velikost obrázku je příliš velká"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Stahování obrázku překročilo maximální velikost"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Vzdálený server vrátil prázdnou odpověď"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Zadaná URL adresa není platný soubor obrázku"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulharština"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Čeština"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Dánština"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Němčina"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Řečtina"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Angličtina"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Španělština"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Španělština (Mexiko)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Perština"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finština"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Francouzština"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebrejština"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hindština"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Maďarština"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italština"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japonština"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Korejština"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Lotyština"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Nizozemština"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norština"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polština"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugalština"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugalština (Brazilská)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Rumunština"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Ruština"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Slovenština"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Slovinština"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Srbština"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Švédština"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thajština"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turečtina"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ukrajinština"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamština"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Čínština (zjednodušená)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Čínština (tradiční)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] Přihlásit se do aplikace"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "E-mail"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Chyba při ověření pluginu"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Metadata musí být objekt python dict"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Metadata pluginu"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "Pole metadat JSON pro použití externími pluginy"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Nesprávně naformátovaný vzor"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Neznámý formát klíče"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Chybí požadovaný klíč"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Referenční pole nemůže být prázdné"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Referenční číslo musí odpovídat požadovanému vzoru"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Referenční číslo je příliš velké"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
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:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Neplatný výběr"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Název"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Popis"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Popis (volitelně)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Cesta"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Poznámky (volitelné)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Data čárového kódu"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Data čárového kódu třetí strany"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Hash čárového kódu"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Jedinečný hash dat čárového kódu"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Nalezen existující čárový kód"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Chyba serveru"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Server zaznamenal chybu."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Musí být platné číslo"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Měna"
msgid "Select currency from available options"
msgstr "Vyberte měnu z dostupných možností"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Uživatelské jméno"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Křestní jméno"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "Křestní jméno uživatele"
@@ -552,30 +572,30 @@ msgstr "Příjmení"
msgid "Last name of the user"
msgstr "Příjmení uživatele"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "Emailová adresa uživatele"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Personál"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr "Má tento uživatel oprávnění personálu"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Super-uživatel"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr "Je tento uživatel superuživatel"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr "Je tento uživatel superuživatel"
msgid "Active"
msgstr "Aktivní"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Je tento uživatelský účet aktivní"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Nemáte oprávnění měnit tuto uživatelskou roli."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Pouze superuživatelé mohou vytvářet nové uživatele"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Váš účet byl vytvořen."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Pro přihlášení použijte funkci obnovení hesla"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Vítejte v InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Neplatná hodnota"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Datový soubor"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Vyberte datový soubor k nahrání"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Nepodporovaný typ souboru"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Soubor je příliš velký"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "V souboru nebyly nalezeny žádné sloupce"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "V souboru nebyly nalezeny žádné řádky s daty"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Nebyly zadány žádné řádky s daty"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Nebyly zadány žádné sloupce s daty"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Chybí povinný sloupec: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplicitní sloupec: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Vzdálený obraz"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL souboru vzdáleného obrázku"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Stahování obrázků ze vzdálené URL není povoleno"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Kontrola procesů na pozadí se nezdařila"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "Email backend není nakonfigurován"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Kontroly zdraví systému InvenTree selhaly"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Neznámá databáze"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Neplatná fyzikální jednotka"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Neplatný kód měny"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Přidaná hodnota nesmí být záporná"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Nesmí přesáhnout 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Neplatná hodnota překročení"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Upravit informace o uživateli"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Nastavit heslo"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Hesla se musí shodovat"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Zadáno špatné heslo"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Informace o systému"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "O InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Nadřazená sestava"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Vystavil"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Sestavení musí být zrušeno před odstraněním"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Spotřební materiál"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Volitelné"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Sestava"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Sledováno"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Přiděleno"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Přiděleno"
msgid "Available"
msgstr "Dostupné"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Díl"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Vytvořit objednávku"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Vytvořit objednávku"
msgid "Build Orders"
msgstr "Vytvořené objednávky"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Neplatná volba nadřazeného sestavení"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr "Musí být specifikován odpovědný uživatel nebo skupina"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "Díly obědnávky sestavení nemohou být změněny"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Referenční číslo objednávky"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Reference"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Stručný popis sestavení (nepovinné)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Příkaz sestavení pro který je toto sestavení přiděleno"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Díl"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Vyber téma, které chceš stavět"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Referenční číslo prodejní objednávky"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Prodejní příkaz, kterému je tato verze přidělena"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Umístění lokace"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Cílová lokace"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Vyberte lokaci, kde budou dokončené položky uloženy"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Množství sestav"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Počet skladových položek k sestavení"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Dokončené položky"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Počet skladových položek, které byly dokončeny"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Stav sestavení"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Stavový kód sestavení"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Kód dávky"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Dávkový kód pro tento výstup sestavení"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Datum vytvoření"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Cílové datum dokončení"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Datum dokončení"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "dokončil"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Vystavil"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Uživatel, který vydal tento příkaz k sestavení"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Odpovědný"
-#: build/models.py:371
+#: build/models.py:370
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:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Externí odkaz"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Odkaz na externí URL"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Priorita sestavení"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Priorita tohoto příkazu k sestavení"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Kód projektu"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Kód projektu pro objednávku sestavení"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr "Nepodařilo se uvolnit úlohu pro dokončení přidělení sestavy"
@@ -1110,610 +1129,619 @@ msgstr "Příkaz k sestavení {build} byl dokončen"
msgid "A build order has been completed"
msgstr "Příkaz k sestavení byl dokončen"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr "U sledovatelných dílů musí být uvedena sériová čísla"
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Nebyl specifikováno žádný výstup sestavení"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Výstup sestavení je již dokončen"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "Výstup sestavení neodpovídá příkazu sestavení"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Množství musí být vyšší než nula"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
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:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr "Výstup sestavy {serial} neprošel všemi požadavky"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr "Vytvořit položku řádku objednávky"
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Vytvořit objekt"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Množství"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Vyžadované množství pro objednávku"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Skladová položka je nadměrně zabrána"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Zabrané množství musí být větší než nula"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "Množství musí být 1 pro zřetězený sklad"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "Vybraná položka zásob neodpovídá řádku BOM"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Skladové položky"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Zdrojová skladová položka"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Skladové množství pro sestavení"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Instalovat do"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Cílová skladová položka"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Název dílu"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Vytvořit výstup"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "Vytvořený výstup neodpovídá nadřazenému sestavení"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "Výstupní část se neshoduje s částí příkazu sestavení"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Výstup sestavení je již dokončen"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Tento stavební výstup není plně přiřazen"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Zadejte množství pro výstup sestavení"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Celé množství požadované pro sledovatelné díly"
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Je vyžadována celočíselná hodnota množství, protože kusovník obsahuje sledovatelné díly"
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Sériová čísla"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Zadejte sériová čísla pro sestavení výstupů"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Lokace"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr "Skladové umístění pro výstup sestavy"
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Automaticky zvolit sériová čísla"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Automaticky přidělit požadované položky s odpovídajícími sériovými čísly"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr "U sledovatelných dílů musí být uvedena sériová čísla"
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr "Následující sériová čísla již existují nebo jsou neplatná"
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Musí být uveden seznam výstupů sestavy"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Umístění zásob pro seškrábnuté výstupy"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Zahodit alokace"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Vyřadit všechny přidělené zásoby pro vyřazené výstupy"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Důvod vyřazení výstupu(ů) sestavy"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Umístění dokončených výstupů sestavy"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Stav"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Přijmout neúplné přidělení"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Dokončit výstupy pokud zásoby nebyly plně přiděleny"
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr "Spotřebovat přidělené zásoby"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr "Spotřebovat všechny zásoby, které již byly přiděleny této sestavě"
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Odstranit neúplné výstupy"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "Odstranit všechny výstupy sestavy, které nebyly dokončeny"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Není povoleno"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Přijmout jako spotřebované touto objednávkou sestavy"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Uvolnit před dokončením této objednávky sestavy"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Nadměrně přidělené zásoby"
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Jak chcete zacházet s extra skladovými položkami přiřazenými k objednávce na sestavu"
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Některé skladové položky byly nadměrně přiděleny"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Přijmout nepřidělené"
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Přijmout, že skladové položky nebyly plně přiřazeny k této objednávce sestavy"
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Požadované zásoby nebyly plně přiděleny"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Přijmout neúplné"
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Přijmout, že nebyl dokončen požadovaný počet výstupů sestavy"
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Požadované množství sestavy nebylo dokončeno"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "Objednávka sestavy má neúplné výstupy"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Linka sestavy"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Výstup sestavy"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "Výstup sestavy musí odkazovat na stejnou sestavu"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Řádková položka sestavy"
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part musí ukazovat na stejný díl jako objednávka sestavy"
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "Položka musí být skladem"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Dostupné množství ({q}) překročeno"
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Pro přidělení sledovaných dílů musí být zadán výstup sestavy"
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Výstup sestavy nelze zadat pro přidělení nesledovaných dílů"
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Položky přidělení musí být poskytnuty"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Skladové místo, odkud se mají díly odebírat (ponechte prázdné, pokud chcete odebírat z libovolného místa)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Vynechat lokace"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Vyloučit skladové položky z tohoto vybraného umístění"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Zaměnitelné zásoby"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Skladové položky na více místech lze používat zaměnitelně"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Náhradní zásoby"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Povolit přidělování náhradních dílů"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Volitelné položky"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Přiřazení volitelných BOM položek k objednávce sestavy"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr "Nepodařilo se spustit úlohu automatického přidělování"
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Číslo dílu výrobce"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Balení"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "ID dílu"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr "IPN dílu"
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Popis dílu"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Sledovatelné"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "BOM Položka"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Přidělené zásoby"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "Na objednávku"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr "Ve výrobě"
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr "Dostupné zásoby"
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Dostupné zásoby"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Nevyřízeno"
@@ -1722,21 +1750,21 @@ msgstr "Nevyřízeno"
msgid "Production"
msgstr "Výroba"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Zrušeno"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Hotovo"
@@ -1744,165 +1772,162 @@ msgstr "Hotovo"
msgid "Stock required for build order"
msgstr "Zásoby potřebné pro objednávku sestavy"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Opožděná objednávka sestavy"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr "Objednávka sestavy {bo} je nyní opožděná"
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Miniatura dílu"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Akce čárového kódu"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Zobrazit QR kód"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Odstranit čárový kód"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Přiřadit čárový kód"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Akce tisku"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Tisk reportu o objednávce sestavy"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Akce sestavy"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Upravit sestavu"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Duplikovat sestavu"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Zrušit sestavu"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Smazat sestavu"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Dokončit sestavu"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Popis sestavy"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Pro tuto objednávku sestavy nebyly vytvořeny žádné výstupy sestavy"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Objednávka sestavy je připravena k označení jako dokončená"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Objednávku sestavy nelze dokončit, protože zbývají nevyřízené výstupy"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Požadované množství sestavy ještě nebylo dokončeno"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Zásoby nebyly plně přiřazeny k této objednávce na sestavu"
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Cílené datum"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Tato sestava byla splatná v %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Tato sestava byla splatná v %(target)s"
msgid "Overdue"
msgstr "Po splatnosti"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Dokončené výstupy"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Prodejní objednávka"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Priorita"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Odstranit objednávku sestavy"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "QR kód objednávky sestavy"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Propojit čárový kód s objednávkou sestavy"
@@ -1968,8 +1994,9 @@ msgstr "Zdroj zásob"
msgid "Stock can be taken from any available location."
msgstr "Zásoby lze odebírat z jakéhokoli dostupného umístění."
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Místo určení"
@@ -1981,23 +2008,24 @@ msgstr "Místo určení není specifikováno"
msgid "Allocated Parts"
msgstr "Přidělené díly"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Šarže"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Vytvořeno"
@@ -2005,8 +2033,8 @@ msgstr "Vytvořeno"
msgid "No target date set"
msgstr "Nenastaveno cílené datum"
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Dokončeno"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr "Objednat požadované díly"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Objednat díly"
@@ -2120,7 +2148,7 @@ msgstr "Objednávka nové sestavy"
msgid "Build Order Details"
msgstr "Podrobnosti o objednávce sestavy"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr "Neúplné výstupy"
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr "Je odkaz"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr "Je soubor"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr "Uživatel nemá oprávnění k odstranění této přílohy"
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr "Neplatný kód měny"
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr "Duplicitní kód měny"
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr "Nejsou uvedeny žádné platné kódy měn"
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Žádný plugin"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Nepodporovaný formát souboru: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Chyba při čtení souboru (neplatné kódování)"
@@ -2192,1883 +2215,2039 @@ msgstr "Chyba při čtení souboru (nesprávný rozměr)"
msgid "Error reading file (data could be corrupted)"
msgstr "Chyba při čtení souboru (data mohou být poškozena)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Soubor"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Vybrat soubor k nahrání"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Soubor"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "Vyberte {name} soubor k nahrání"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Aktualizováno"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Časové razítko poslední aktualizace"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr "Adresa URL webu je uzamčena konfigurací"
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Jedinečný kód projektu"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Popis projektu"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr "Uživatel nebo skupina odpovědná za tento projekt"
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
-msgstr "Klíč nastavení (musí být unikátní - rozlišuje malá a velká písmena)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Hodnota nastavení"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "Zvolená hodnota není platnou možností"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "Hodnota musí být logická hodnota"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "Hodnota musí být celé číslo"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "Klíčový text musí být jedinečný"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Žádná skupina"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Je vyžadován restart"
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr "Bylo změněno nastavení, které vyžaduje restart serveru"
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Nevyřízené migrace"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr "Počet nevyřízených migrací databáze"
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Název instance serveru"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Textový popisovač pro instanci serveru"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Použít název instance"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Použít název instance v liště"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Omezit zobrazování `o aplikaci`"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Zobrazovat okno `o aplikaci` pouze superuživatelům"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Jméno společnosti"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Interní název společnosti"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "Základní URL"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "Základní URL pro instanci serveru"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Výchozí měna"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Vyberte základní měnu pro cenové kalkulace"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr "Podporované měny"
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr "Seznam podporovaných kódů měn"
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr "Interval aktualizace měny"
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Jak často aktualizovat směnné kurzy (pro vypnutí nastavte na nulu)"
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "dny"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr "Plugin aktualizace měny"
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr "Plugin pro aktualizaci měn k použití"
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Stáhnout z URL"
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr "Povolit stahování vzdálených obrázků a souborů z externích URL"
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Limit velikosti stahování"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Maximální povolená velikost stahování vzdáleného obrázku"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "User-agent použitý ke stažení z adresy URL"
-#: common/models.py:1322
+#: common/models.py:1379
msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)"
msgstr "Povolit přepsání user-agenta používaného ke stahování obrázků a souborů z externí adresy URL (ponechte prázdné pro výchozí)"
-#: common/models.py:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr "Přísná validace URL"
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr "Vyžadovat specifikaci schématu při ověřování adres URL"
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Vyžadovat potvrzení"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Vyžadovat výslovné potvrzení uživatele pro určitou akci."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Hloubka stromu"
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr "Výchozí hloubka stromu pro zobrazení stromu. Hlubší úrovně lze načítat líně podle potřeby."
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Interval kontroly aktualizací"
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr "Jak často kontrolovat aktualizace (nastavte na nulu pro vypnutí)"
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automatické Zálohování"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr "Povolit automatické zálohování databáze a mediálních souborů"
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Interval automatického zálohování"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr "Zadejte počet dní mezi automatickými zálohovými událostmi"
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Interval mazání úloh"
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr "Výsledky úloh na pozadí budou odstraněny po zadaném počtu dní"
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Interval odstranění protokolu chyb"
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr "Záznamy chyb budou odstraněny po zadaném počtu dní"
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Interval pro odstranění oznámení"
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr "Uživatelská oznámení budou smazána po zadaném počtu dní"
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Podpora čárových kódů"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr "Povolit podporu pro skenování čárových kódů ve webovém rozhraní"
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Zpoždění vstupu čárového kódu"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Doba zpoždění zpracování vstupu čárového kódu"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Podpora webové kamery pro čárové kódy"
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr "Povolit skenování čárových kódů přes webovou kameru v prohlížeči"
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Revize dílu"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Povolit pole revize pro díl"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr "Povolit odstranění ze sestavy"
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr "Povolit odstranění dílů, které jsou použity v sestavě"
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr "IPN Regex"
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "Regulární vzorec výrazu pro odpovídající IPN dílu"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Povolit duplicitní IPN"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Povolit více dílům sdílet stejný IPN"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Povolit editaci IPN"
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr "Povolit změnu IPN při úpravách dílu"
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Kopírovat data BOM dílu"
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr "Kopírovat data BOM ve výchozím nastavení při duplikování dílu"
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Kopírovat data parametrů dílu"
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr "Kopírovat data parametrů ve výchozím nastavení při duplikování dílu"
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Kopírovat zkušební data dílu"
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr "Kopírovat testovací data ve výchozím nastavení při duplikování dílu"
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Kopírovat šablony parametrů kategorie"
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr "Kopírování šablon parametrů kategorie při vytváření dílu"
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Šablona"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Díly jsou ve výchozím nastavení šablony"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "Díly lze ve výchozím nastavení sestavit z jiných komponentů"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Komponent"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "Díly lze ve výchozím nastavení použít jako dílčí komponenty"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Možné zakoupit"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Díly jsou zakoupitelné ve výchozím nastavení"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Prodejné"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Díly jsou prodejné ve výchozím nastavení"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Díly jsou sledovatelné ve výchozím nastavení"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Nehmotné (virtuální)"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Zobrazit Import v zobrazeních"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Zobrazit průvodce importem v některých zobrazeních dílu"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Zobrazit související díly"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Zobrazit související díly pro díl"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Počáteční údaje zásob"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Počáteční údaje dodavatele"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Formát zobrazení jména dílu"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Formát pro zobrazení názvu dílu"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Výchozí ikona kategorie dílu"
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)"
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Vynutit jednotky parametru"
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr "Pokud jsou uvedeny jednotky, musí hodnoty parametrů odpovídat zadaným jednotkám"
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Minimální počet desetinných míst u cen"
-#: common/models.py:1574
+#: common/models.py:1643
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:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr "Maximální počet desetinných míst u cen"
-#: common/models.py:1587
+#: common/models.py:1656
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:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Použít ceny dodavatele"
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Zahrnout cenová zvýhodnění dodavatelů do celkových cenových kalkulací"
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Přepsání historie nákupu"
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historické ceny nákupních objednávek mají přednost před cenovými zvýhodněními dodavatele"
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Použít ceny skladových položek"
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Použít ceny z ručně zadaných skladových údajů pro cenové kalkulace"
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Stáří cen skladových položek"
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Vyloučit skladové položky starší než tento počet dní z cenových kalkulací"
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Použít cenu varianty"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Zahrnutí cen variant do celkových cenových kalkulací"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Pouze aktivní varianty"
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Pro výpočet ceny varianty použijte pouze aktivní díly varianty"
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Interval přestavby cen"
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr "Počet dní před automatickou aktualizací cen dílů"
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Interní ceny"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Povolit interní ceny pro díly"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Přepis interní ceny"
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr "Pokud jsou k dispozici, interní ceny mají přednost před výpočty cenového rozpětí"
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Povolit tisk štítků"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Povolit tisk štítků z webového rozhraní"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "DPI rozlišení štítků"
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr "Rozlišení DPI při generování obrazových souborů, které se dodávají do zásuvných modulů pro tisk štítků"
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Povolit reporty"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Povolit generování reportů"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Režim ladění chyb"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Generovat reporty v režimu ladění (HTML výstup)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr "Zaznamenávat chyby reportů"
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr "Zaznamenávat chyby, které se vyskytnou při vytváření reportů"
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Velikost stránky"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Výchozí velikost stránky pro PDF reporty"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Povolit testovací reporty"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Povolit generování zkušebních reportů"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Připojit testovací reporty"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Globálně unikátní sériová čísla"
-#: common/models.py:1721
+#: common/models.py:1776
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:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Automaticky vyplnit sériová čísla"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Automaticky vyplnit sériová čísla ve formulářích"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Odstranit vyčerpané zásoby"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr "Určuje výchozí chování při vyčerpání zásoby položky"
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Šablona kódu dávky"
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr "Šablona pro generování výchozích kódů dávky pro skladové položky"
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Expirace zásob"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Povolit funkci expirace zásob"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Prodat prošlé zásoby"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Povolit prodej prošlých zásob"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Čas stáří zásob"
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr "Počet dnů, po které jsou skladové položky považovány za nevyužité před uplynutím doby expirace"
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Sestavit prošlé zásoby"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Povolit sestavování s prošlými zásobami"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Kontrola vlastnictví zásob"
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr "Umožnit kontrolu vlastnictví nad skladovými místy a položkami"
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Výchozí ikona umístění zásob"
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr "Výchozí ikona umístění zásob (prázdné znamená bez ikony)"
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Zobrazit nainstalované skladové položky"
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr "Zobrazit nainstalované skladové položky ve skladových tabulkách"
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr "Zkontrolovat BOM při instalaci položek"
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr "Nainstalované skladové položky musí existovat v BOM pro nadřazený díl"
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr "Povolit převod mimo sklad"
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr "Umožnit přesun skladových položek, které nejsou na skladě, mezi skladovými místy"
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Referenční vzor objednávky sestavy"
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr "Požadovaný vzor pro generování referenčního pole Objednávka sestavy"
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr "Vyžadovat odpovědného vlastníka"
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr "Ke každé objednávce musí být přiřazen odpovědný vlastník"
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr "Blokovat, dokud testy neprojdou"
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr "Zabránit dokončení výstupů sestavy, dokud neprojdou všechny požadované testy"
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Povolit vracení objednávek"
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr "Povolit funkci vrácení objednávky v uživatelském rozhraní"
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Referenční vzor návratové objednávky"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr "Požadovaný vzor pro vygenerování referenčního pole Návratová objednávka"
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Úprava dokončených návratových objednávek"
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr "Umožnit úpravu návratových objednávek po jejich dokončení"
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Referenční vzor prodejní objednávky"
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr "Požadovaný vzor pro generování referenčního pole prodejní objednávky"
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Výchozí přeprava prodejní objednávky"
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr "Povolit vytvoření výchozí přepravy s prodejními objednávkami"
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Úprava dokončených prodejních objednávek"
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Umožnit úpravy prodejních objednávek po jejich odeslání nebo dokončení"
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr "Označit odeslané objednávky jako dokončené"
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr "Prodejní objednávky označené jako odeslané se automaticky dokončí a obejdou stav „odesláno“"
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Referenční vzor nákupní objednávky"
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Požadovaný vzor pro generování referenčního pole nákupní objednávky"
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Úprava dokončených nákupních objednávek"
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Umožnit úpravy nákupních objednávek po jejich odeslání nebo dokončení"
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr "Automatické dokončování nákupních objednávek"
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Automaticky označit nákupní objednávky jako kompletní, jakmile jsou přijaty všechny řádkové položky"
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Povolit pole zapomenutého hesla"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr "Povolení funkce zapomenutého hesla na přihlašovacích stránkách"
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Povolit registrace"
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr "Povolit samoregistraci uživatelů na přihlašovacích stránkách"
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "Povolit SSO"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "Povolit SSO na přihlašovacích stránkách"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Povolit SSO registraci"
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Povolit samoregistraci uživatelů prostřednictvím SSO na přihlašovacích stránkách"
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Vyžadován e-mail"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Požadovat, aby uživatel při registraci zadal e-mail"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "Automaticky vyplnit SSO uživatele"
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Automaticky vyplnit údaje o uživateli z údajů o účtu SSO"
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "Mail dvakrát"
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr "Při registraci dvakrát požádat uživatele o zadání e-mailu"
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Heslo dvakrát"
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr "Při registraci dvakrát požádat uživatele o heslo"
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Povolené domény"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Omezit registraci na určité domény (oddělené čárkou a začínající @)"
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Skupina při registraci"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Vynutit MFA"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Uživatelé musí používat vícefaktorové zabezpečení."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Zkontrolovat pluginy při spuštění"
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Zkontrolujte, zda jsou při spuštění nainstalovány všechny pluginy - povolit v kontejnerových prostředích"
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr "Zkontrolovat aktualizace pluginů"
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr "Povolit pravidelné kontroly aktualizací nainstalovaných pluginů"
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "Povolit integraci URL"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Povolit plug-inům přidávat trasy URL"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Povolit integraci navigace"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Povolit integrování pluginů do navigace"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "Povolit integraci aplikací"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Povolit pluginům přidávát aplikace"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Povolit integraci plánu"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Povolit pluginům spouštění naplánovaných úloh"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Povolit integraci událostí"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Povolit pluginům reagovat na interní události"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Povolit kódy projektů"
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr "Povolit kódy projektů pro sledování projektů"
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Funkce inventury"
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Povolit funkci inventury pro evidenci stavu zásob a výpočet hodnoty zásob"
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr "Vyloučit externí umístění"
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Vyloučit skladové položky na externích místech z výpočtů inventury"
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Perioda automatické inventury"
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Počet dní mezi automatickým záznamem inventury (pro vypnutí nastavte nulu)"
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr "Interval mazání reportů"
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Reporty o inventuře se po určitém počtu dní vymažou"
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr "Zobrazit celá jména uživatelů"
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr "Zobrazit plná jména uživatelů namísto uživatelských jmen"
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr "Povolit data zkušební stanice"
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr "Povolit sběr dat ze zkušební stanice pro výsledky testů"
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr "Klíč nastavení (musí být unikátní - rozlišuje malá a velká písmena"
+#: common/models.py:2224
+msgid "Create Template on Upload"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
+
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Skrýt neaktivní díly"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Skrýt neaktivní díly ve výsledcích zobrazených na domovské stránce"
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Zobrazit odebírané díly"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Zobrazit odebírané díly na domovské stránce"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Zobrazit odebírané kategorie"
-#: common/models.py:2227
+#: common/models.py:2294
msgid "Show subscribed part categories on the homepage"
msgstr "Zobrazit kategorie odebíraných dílů na hlavní stránce"
-#: common/models.py:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Zobrazit nejnovější díly"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Zobrazit nejnovější díly na domovské stránce"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
msgstr "Zobrazit neplatné kusovníky (BOMy)"
-#: common/models.py:2239
+#: common/models.py:2306
msgid "Show BOMs that await validation on the homepage"
msgstr "Zobrazit kusovníky (BOMy), které čekají na ověření, na domovské stránce"
-#: common/models.py:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Zobrazit nedávné změny zásob"
-#: common/models.py:2245
+#: common/models.py:2312
msgid "Show recently changed stock items on the homepage"
msgstr "Zobrazit nedávno změněné skladové položky na domovské stránce"
-#: common/models.py:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Zobrazit nízký stav zásob"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Zobrazit na domovské stránce položky s nízkou skladovou zásobou"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Zobrazit vyčerpané zásoby"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Zobrazit vyčerpané položky na domovské stránce"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Zobrazit potřebné zásoby"
-#: common/models.py:2263
+#: common/models.py:2330
msgid "Show stock items needed for builds on the homepage"
msgstr "Zobrazit skladové položky potřebné pro sestavy na domovské stránce"
-#: common/models.py:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Zobrazit expirované zásoby"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Zobrazit expirované skladové položky na domovské stránce"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Zobrazit neaktuální zásoby"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Zobrazit neaktuální skladové položky na domovské stránce"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Zobrazit nevyřízené sestavy"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Zobrazit nevyřízené sestavy na domovské stránce"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Zobrazit sestavy po splatnosti"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Zobrazit sestavy po splatnosti na domovské stránce"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Zobrazit nevyřízené PO"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Zobrazit nevyřízené PO na domovské stránce"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Zobrazit PO po splatnosti"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Zobrazit PO po splatnosti na domovské stránce"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Zobrazit nevyřízené SO"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Zobrazit nevyřízené SO na domovské stránce"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Zobrazit SO po splatnosti"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Zobrazit SO po splatnosti na domovské stránce"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
msgstr "Zobrazit čekající zásilky SO"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr "Zobrazit čekající zásilky SO na domovské stránce"
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Zobrazit novinky"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Zobrazit novinky na domovské stránce"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Zobrazení štítků na řádku"
-#: common/models.py:2330
+#: common/models.py:2397
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "Zobrazit štítky PDF v prohlížeči namísto stahování jako soubor"
-#: common/models.py:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Výchozí tiskárna štítků"
-#: common/models.py:2338
+#: common/models.py:2405
msgid "Configure which label printer should be selected by default"
msgstr "Konfigurovat tiskárnu štítků, která má být vybrána jako výchozí"
-#: common/models.py:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Zobrazení reportů na řádku"
-#: common/models.py:2346
+#: common/models.py:2413
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "Zobrazit reporty PDF v prohlížeči namísto stahování jako soubor"
-#: common/models.py:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Hledat díly"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
msgstr "Zobrazit díly v náhledu hledání"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Hledat díly dodavatele"
-#: common/models.py:2359
+#: common/models.py:2426
msgid "Display supplier parts in search preview window"
msgstr "Zobrazit díly dodavatele v náhledu hledání"
-#: common/models.py:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Vyhledávání dílů výrobce"
-#: common/models.py:2365
+#: common/models.py:2432
msgid "Display manufacturer parts in search preview window"
msgstr "Zobrazit díly výrobce v náhledu hledání"
-#: common/models.py:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Skrýt neaktivní díly"
-#: common/models.py:2371
+#: common/models.py:2438
msgid "Excluded inactive parts from search preview window"
msgstr "Vyloučené neaktivní části z okna náhledu vyhledávání"
-#: common/models.py:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Hledat kategorie"
-#: common/models.py:2377
+#: common/models.py:2444
msgid "Display part categories in search preview window"
msgstr "Zobrazit kategorie dílů v náhledu hledání"
-#: common/models.py:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Hledat zásoby"
-#: common/models.py:2383
+#: common/models.py:2450
msgid "Display stock items in search preview window"
msgstr "Zobrazit skladové položky v náhledu hledání"
-#: common/models.py:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Skrýt nedostupné skladové položky"
-#: common/models.py:2390
+#: common/models.py:2457
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Vyloučit skladové položky, které nejsou dostupné z okna náhledu hledání"
-#: common/models.py:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Hledat umístění"
-#: common/models.py:2397
+#: common/models.py:2464
msgid "Display stock locations in search preview window"
msgstr "Zobrazit skladová umístění v náhledu hledání"
-#: common/models.py:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Hledat společnosti"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Zobrazit společnosti v náhledu hledání"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Hledat objednávky sestav"
-#: common/models.py:2409
+#: common/models.py:2476
msgid "Display build orders in search preview window"
msgstr "Zobrazit objednávky sestav v náhledu hledání"
-#: common/models.py:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Hledat nákupní objednávky"
-#: common/models.py:2415
+#: common/models.py:2482
msgid "Display purchase orders in search preview window"
msgstr "Zobrazit nákupní objednávky v náhledu hledání"
-#: common/models.py:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Vyloučit neaktivní nákupní objednávky"
-#: common/models.py:2422
+#: common/models.py:2489
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Vyloučit neaktivní nákupní objednávky z okna náhledu vyhledávání"
-#: common/models.py:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Hledat prodejní objednávky"
-#: common/models.py:2429
+#: common/models.py:2496
msgid "Display sales orders in search preview window"
msgstr "Zobrazit prodejní objednávky v náhledu hledání"
-#: common/models.py:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Vyloučit neaktivní prodejní objednávky"
-#: common/models.py:2436
+#: common/models.py:2503
msgid "Exclude inactive sales orders from search preview window"
msgstr "Vyloučit neaktivní prodejní objednávky z okna náhledu vyhledávání"
-#: common/models.py:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Vyhledávání vrácených objednávek"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr "Zobrazit vrácené objednávky v okně náhledu vyhledávání"
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr "Vyloučit neaktivní vrácené objednávky"
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr "Vyloučit neaktivní vrácené objednávky z okna náhledu vyhledávání"
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Náhled výsledků vyhledávání"
-#: common/models.py:2458
+#: common/models.py:2525
msgid "Number of results to show in each section of the search preview window"
msgstr "Počet výsledků, které se mají zobrazit v každé části okna náhledu vyhledávání"
-#: common/models.py:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Regex hledání"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr "Povolit regulární výrazy ve vyhledávacích dotazech"
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr "Vyhledávání celého slova"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr "Vyhledávací dotazy vracejí výsledky pro shody celých slov"
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Zobrazit množství ve formulářích"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Zobrazit dostupné množství dílů v některých formulářích"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "Klávesa Escape zavře formuláře"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Zavřít modální formuláře pomocí klávesy escape"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Pevná navigační lišta"
-#: common/models.py:2489
+#: common/models.py:2556
msgid "The navbar position is fixed to the top of the screen"
msgstr "Pozice navigační lišty je pevně nastavena na horní okraj obrazovky"
-#: common/models.py:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Formát data"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Preferovaný formát pro zobrazení datumů"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Plánování dílů"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Zobrazit informace o plánování dílů"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventura dílu"
-#: common/models.py:2516
+#: common/models.py:2583
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Zobrazit informace o skladových zásobách dílů (pokud je povolena funkce inventury)"
-#: common/models.py:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Délka textu v tabulce"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maximální délka textu v zobrazeních tabulek"
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr "Přijímat zprávy o chybách"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr "Dostávat oznámení o systémových chybách"
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr "Poslední použité tiskárny"
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr "Uložte poslední použité tiskárny pro uživatele"
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Uživatel"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr "Množství cenové slevy"
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Cena"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr "Jednotková cena při stanoveném množství"
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr "Koncový bod"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Koncový bod, ve kterém je tento webhook přijímán"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Název tohoto webhooku"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Je tento webhook aktivní"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr "Token"
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Token pro přístup"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Tajný klíč"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Sdílený tajný klíč pro HMAC"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "ID zprávy"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Unikátní identifikátor pro tuto zprávu"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr "Hostitel"
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Hostitel, od kterého byla tato zpráva přijata"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Záhlaví"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Záhlaví této zprávy"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Tělo"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Tělo zprávy"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Koncový bod, na kterém byla zpráva přijata"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Pracoval na"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "Byla práce na této zprávě dokončena?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr "ID"
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Název"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Odkaz"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Zveřejněno"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Souhrn"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Přečteno"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "Byla tato novinka přečtena?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Soubor obrázku"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr "Cílový typ modelu pro tento obrázek"
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr "Cílové ID modelu pro tento obrázek"
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr "Název jednotky musí být platný identifikátor"
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr "Název jednotky"
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbol"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr "Volitelný symbol jednotky"
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definice"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr "Definice jednotky"
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Příloha"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Chybějící soubor"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Chybějící externí odkaz"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Vyberte soubor k přiložení"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Komentář"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr "Komentář přílohy"
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr "Datum nahrání"
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr "Datum, kdy byl soubor nahrán"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr "Velikost souboru"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr "Velikost souboru v bytech"
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr "Uveden neplatný typ modelu pro přílohu"
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Kontext"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Nový {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr "Byla vytvořena nová objednávka a přiřazena k vám"
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr "{verbose_name} zrušeno"
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr "Objednávka, která je vám přidělena, byla zrušena"
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr "Čas uzamčení"
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr "Jméno úkolu"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr "Funkce"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr "Název funkce"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr "Argumenty"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr "Argumenty úlohy"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr "Argumenty klíčových slov"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr "Argumenty klíčových slov úlohy"
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Název souboru"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr "Typ modelu"
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr "Uživatel nemá oprávnění k vytváření nebo úpravám příloh pro tento model"
@@ -4116,15 +4295,15 @@ msgstr "Přiřadit pole"
msgid "Match Items"
msgstr "Přiřadit položky"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Shoda polí se nezdařila"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Importované díly"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr "Interní díl je aktivní"
msgid "Supplier is Active"
msgstr "Dodavatel je aktivní"
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Společnost"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Společnosti"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Popis společnosti"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "Popis společnosti"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Webová stránka"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Webové stránky společnosti"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Telefonní číslo"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Kontaktní telefonní číslo"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Kontaktní e-mailová adresa"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Kontakt"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Kontaktní místo"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Odkaz na externí informace o společnosti"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr "Je tato společnost aktivní?"
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "Prodáváte zboží této společnosti?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "Zakupujete zboží od této společnosti?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Vyrábí tato společnost díly?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Výchozí měna používaná pro tuto společnost"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Adresa"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr "Adresy"
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr "Vyberte společnost"
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr "Název adresy"
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr "Název popisující záznam adresy"
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr "Primární adresa"
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr "Nastavit jako primární adresu"
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr "Řádek 1"
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr "1. řádek adresy"
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr "Řádek 2"
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr "2. řádek adresy"
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr "PSČ"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr "Město/Region"
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr "PSČ město/region"
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr "Stát/kraj"
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr "Stát nebo provincie"
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr "Země"
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr "Adresovaná země"
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr "Doručovací poznámky pro kurýra"
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr "Poznámky pro kurýra"
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr "Interní přepravní poznámky"
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr "Doručovací poznámky pro interní použití"
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr "Odkaz na informace o adrese (externí)"
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Výrobce dílu"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Základní díl"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Zvolte díl"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Výrobce"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Vyberte výrobce"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr "MPN"
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "URL pro odkaz na díl externího výrobce"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Popis dílu výrobce"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Název parametru"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Hodnota"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Hodnota parametru"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Jednotky"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Jednotky parametru"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Díl dodavatele"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr "Jednotky balení musí být kompatibilní s jednotkami základních dílů"
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr "Jednotky balení musí být větší než nula"
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr "Odkazovaný díl výrobce musí odkazovat na stejný základní díl"
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Dodavatel"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Vyberte dodavatele"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Skladová evidence dodavatele"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr "Je tento díl dodavatele aktivní?"
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Vyberte díl výrobce"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "Adresa URL pro odkaz na externí díl dodavatele"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Popis dílu dodavatele"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Poznámka"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "základní cena"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimální poplatek (např. poplatek za skladování)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Balení dílu"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Počet kusů v balení"
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr "Celkové množství dodávané v jednom balení. Pro jednotlivé položky ponechte prázdné."
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "více"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Objednat více"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Množství dostupné od dodavatele"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Dostupnost aktualizována"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Datum poslední aktualizace údajů o dostupnosti"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Výchozí měna používaná pro tohoto dodavatele"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "Skladem"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr "Neaktivní"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Vytvořit nákupní objednávku"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Upravit údaje o společnosti"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Upravit společnost"
@@ -4605,11 +4784,12 @@ msgstr "Odstranit společnost"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Stáhnout obrázek z URL"
msgid "Delete image"
msgstr "Smazat obrázek"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Zákazník"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Telefon"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr "Odstranit obrázek"
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr "Odstranit přidružený obrázek z této společnosti"
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Odstranit"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr "Nahrát obrázek"
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr "Stáhnout obrázek"
@@ -4714,7 +4894,7 @@ msgstr "Dodavatelský sklad"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Nová nákupní objednávka"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ msgstr "Přiřazené zásoby"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Výrobci"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Objednávka dílů"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Upravit díl výrobce"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Odstranit díl výrobce"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Interní díl"
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr "Nejsou k dispozici žádné informace o výrobci"
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Přiřazené skladové položky"
msgid "Contacts"
msgstr "Kontakty"
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
msgid "Supplier part actions"
msgstr "Akce týkající se dílu dodavatele"
-#: company/templates/company/supplier_part.html:55
#: company/templates/company/supplier_part.html:56
-#: company/templates/company/supplier_part.html:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
msgid "Order Part"
msgstr "Objednávka dílů"
-#: 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 "Aktualizovat dostupnost"
-#: company/templates/company/supplier_part.html:63
#: company/templates/company/supplier_part.html:64
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
msgid "Edit Supplier Part"
msgstr "Upravit dodavatele dílu"
-#: company/templates/company/supplier_part.html:68
#: company/templates/company/supplier_part.html:69
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Duplikovat dodavatele dílu"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr "Vymazat dodavatele dílu"
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Vymazat dodavatele dílu"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Nejsou k dispozici žádné informace o dodavateli"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr "Číslo zboží (SKU)"
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Sklad dílu dodavatele"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Vytvořit novou položku skladu"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Nová skladová položka"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Objednávky dílu dodavatele"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Informace o cenách"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Přidat cenovou slevu"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr "QR kód dílu dodavatele"
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr "Propojit čárový kód s dílem dodavatele"
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr "Aktualizovat dostupnost dílu"
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Skladové položky"
@@ -5022,99 +5203,99 @@ msgstr "Nový zákazník"
msgid "New Company"
msgstr "Nová společnost"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Umístěno"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr "Kopie"
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr "Počet kopií, které se mají tisknout pro každý štítek"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr "Připojeno"
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Neznámý"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr "Tisk"
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr "Žádná média"
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr "Odpojeno"
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr "Tiskárna štítků"
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr "Přímo vytisknout štítky pro různé položky."
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr "Umístění tiskárny"
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr "Určení rozsahu tiskárny na konkrétní místo"
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Společnost, od které se položky objednávají"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Reference dodavatele"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Referenční kód objednávky dodavatele"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "přijal"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Datum vystavení"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Datum vystavení objednávky"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Datum dokončení objednávky"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr "Dodavatel dílu se musí shodovat s dodavatelem PO"
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "Množství musí být kladné"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Společnost, jíž se položky prodávají"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Reference zákazníka "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Referenční kód objednávky zákazníka"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Datum odeslání"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "odesláno společností"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr "Objednávka je již dokončena"
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr "Objednávka je již zrušena"
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr "Pouze otevřená objednávka může být označena jako kompletní"
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr "Objednávku nelze dokončit, protože dodávky jsou nekompletní"
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "Objednávka nemůže být dokončena, protože jsou neúplné řádkové položky"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Množství položky"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Odkaz na řádkovou položku"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Poznámky k řádkovým položkám"
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr "Cílové datum pro tuto řádkovou položku (pro použití cílového data z objednávky ponechte prázdné)"
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr "Popis řádkové položky (nepovinné)"
-#: order/models.py:1420
-msgid "Context"
-msgstr "Kontext"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "Dodatečný kontext pro tento řádek"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Cena za jednotku"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "Dodavatelský díl musí odpovídat dodavateli"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "smazáno"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Díl dodavatele"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Doručeno"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Počet přijatých položek"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Nákupní cena"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Jednotková nákupní cena"
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr "Kde si kupující přeje, aby byla tato položka uložena?"
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr "Virtuální díl nelze přiřadit k prodejní objednávce"
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr "K prodejní objednávce lze přiřadit pouze prodejné díly"
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Prodejní cena"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Jednotková prodejní cena"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Odesláno"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Odeslané množství"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Datum odeslání"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr "Datum doručení"
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr "Datum doručení zásilky"
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Kontroloval(a)"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Uživatel, který zkontroloval tuto zásilku"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Doprava"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Číslo zásilky"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Sledovací číslo"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Informace o sledování zásilky"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Číslo faktury"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Referenční číslo přiřazené faktury"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "Zásilka již byla odeslána"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "Zásilka nemá žádné přidělené skladové položky"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "Zásobní položka nebyla přiřazena"
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr "Nelze přidělit skladovou položku na řádek s jiným dílem"
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr "Nelze přidělit skladovou položku na řádek bez dílu"
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Přidělené množství nesmí překročit množství zásob"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr "Množství musí být 1 pro serializovanou skladovou položku"
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "Prodejní objednávka neodpovídá zásilce"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "Zásilka neodpovídá prodejní objednávce"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Řádek"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Odkaz na zásilku z prodejní objednávky"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Položka"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Vyberte skladovou položku pro přidělení"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Zadejte množství pro přidělení zásob"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr "Reference návratové objednávky"
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr "Společnost, od které se vrací položky"
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr "Stav návratové objednávky"
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr "K návratové objednávce lze přiřadit pouze serializované položky"
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr "Vyberte položku pro vrácení od zákazníka"
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr "Datum přijetí"
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr "Datum přijetí této vrácené položky"
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr "Výsledek"
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr "Výsledky pro tuto položku"
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr "Náklady spojené s návratem nebo opravou této položky"
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr "Dokončené řádky"
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "Objednávku nelze zrušit"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr "Povolit uzavření objednávky s neúplnými řádkovými položkami"
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr "Objednávka má nedokončené řádkové položky"
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "Objednávka není otevřena"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr "Automatická cena"
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr "Automaticky vypočítat nákupní cenu na základě údajů o dílech dodavatele"
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Měna nákupní ceny"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr "Sloučit položky"
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr "Sloučit položky se stejným dílem, místem určení a cílovým datem do jedné řádkové položky"
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Interní číslo dílu"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "Musí být uveden díl dodavatele"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "Objednávka musí být zadána"
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr "Dodavatel musí odpovídat objednávce"
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "Objednávka musí odpovídat dodavateli"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Řádková položka"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "Řádková položka neodpovídá nákupní objednávce"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Vyberte cílové umístění pro přijaté položky"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr "Zadat kód dávky pro příchozí položky skladu"
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Zadat sériová čísla pro příchozí skladové položky"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Čárový kód"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr "Naskenovaný čárový kód"
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Tento čárový kód se již používá"
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr "U sledovatelných dílů musí být uvedeno celočíselné množství"
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Musí být uvedeny řádkové položky"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "Místo určení musí být specifikováno"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "Hodnoty dodaných čárových kódů musí být unikátní"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Ztraceno"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Vráceno"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Zpracovává se"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Vrátit zpět"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Oprava"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Náhrada"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Vrácení peněz"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Odmítnout"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr "Položky nákupní objednávky"
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Přijaté položky"
msgid "Order Notes"
msgstr "Poznámky k objednávce"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr "Náhled loga zákazníka"
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Kategorie dílu"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Kategorie dílů"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Výchozí umístění dílů v této kategorii"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "Díly nesmějí být přímo zařazeny do strukturované kategorie, ale mohou být zařazeny jako podkategorie."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr "Výchozí klíčová slova pro díly v této kategorii"
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Název dílu"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Kategorie dílu"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr "ID dílu nebo název dílu"
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr "Jedinečná hodnota ID dílu"
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr "Hodnota IPN dílu"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr "Vyberte nadřazený díl"
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr "Aktualizovat díly"
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Kontrola procesů na pozadí se nezdařila"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr "Aktualizovat cenu pro díl"
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "Činnost nebyla specifikována"
msgid "No matching action found"
msgstr "Nebyla nalezena odpovídající činnost"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Pro data čárového kódu nebyla nalezena shoda"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Pro data čárového kódu byla nalezena shoda"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Odmítnuto"
msgid "Quarantined"
msgstr "V karanténě"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Původní položka sledování zásob"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Položka zásob vytvořena"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Položka zásob upravena"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Přiřazeno výrobní číslo"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Stav zásob sečten"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Zásoba přidána ručně"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Zásoba odebrána ručně"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Umístění změněno"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Stav zásob byl aktualizován"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Nainstalováno do sestavy"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Odstraněno ze sestavy"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Instalovaná položka komponenty"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Odstraněná komponenta"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Rozdělit od nadřazené položky"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Rozdělit podřazený předmět"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Sloučené položky zásob"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Převedeno na variantu"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Výstup objednávky byl vytvořen"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Výstup objednávky sestavení dokončen"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Výstup objednávky sestavení byl odmítnut"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Spotřebováno podle objednávky"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Odesláno v souladu se zákaznickou objednávkou"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Přijato proti objednávce"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Vráceno proti vratce"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Odesláno zákazníkovi"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Vráceno od zákazníka"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Sestavení"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Odstranit"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr "Ano"
msgid "No"
msgstr "Ne"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Uživatelé"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Osobní údaje"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Oprávnění"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "Nastavení oprávnění"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Skupina"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Zobrazit"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Oprávnění k zobrazení položek"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Oprávnění přidat položky"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Změnit"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Oprávnění k úpravě položek"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Oprávnění k odstranění položek"
diff --git a/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po
index 20a7c3cccb..b3b9ae3901 100644
--- a/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/da/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: da\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API endpoint ikke fundet"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Bruger har ikke tilladelse til at se denne model"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Ingen værdi angivet"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Kunne ikke konvertere {original} til {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr "Ugyldigt antal angivet"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Ugyldigt antal angivet ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Fejloplysninger kan findes i admin panelet"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Angiv dato"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Bemærkninger"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Værdi '{name}' vises ikke i mønsterformat"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Den angivne værdi matcher ikke det påkrævede mønster: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Den indtastede email adresse er ikke gyldig."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Det angivne e-mail domæne er ikke godkendt."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registrering er deaktiveret."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Ugyldigt antal angivet"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Serienummer streng er tom"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplikeret serienummer"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Ugyldig gruppesekvens: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Ingen serienumre fundet"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Fjern HTML-tags fra denne værdi"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Forbindelsesfejl"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Serveren svarede med ugyldig statuskode"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Der opstod en fejl"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Serveren svarede med ugyldig Content-Length værdi"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Billedstørrelsen er for stor"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Billeddownload overskred maksimumstørrelsen"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Fjernserver returnerede tomt svar"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Angivet URL er ikke en gyldig billedfil"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgarsk"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Tjekkisk"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Dansk"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Tysk"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Græsk"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Engelsk"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spansk"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spansk (Mexikansk)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persisk"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finsk"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Fransk"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebraisk"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Ungarsk"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italiensk"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japansk"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Koreansk"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Hollandsk"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norsk"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polsk"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugisisk"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugisisk (Brasilien)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr ""
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Russisk"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr ""
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Slovensk"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbisk"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Svensk"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thailandsk"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Tyrkisk"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr ""
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamesisk"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Kinesisk (forenklet)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Kinesisk (traditionelt)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "E-mail"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Metadata skal være et python dict objekt"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON metadata felt, til brug af eksterne plugins"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Forkert formateret mønster"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Ukendt formatnøgle angivet"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Mangler nødvendig formatnøgle"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Referencefelt må ikke være tomt"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Reference skal matche det påkrævede mønster"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Referencenummer er for stort"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Ugyldigt valg"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Navn"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Beskrivelse"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Beskrivelse (valgfri)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Sti"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Markdown noter (valgfri)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Stregkode Data"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Tredjeparts stregkode data"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Stregkode Hash"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Unik hash af stregkode data"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Eksisterende stregkode fundet"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Serverfejl"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "En fejl blev logget af serveren."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Skal være et gyldigt tal"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Valuta"
msgid "Select currency from available options"
msgstr "Vælg valuta fra tilgængelige muligheder"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Du har ikke tilladelse til at ændre denne brugerrolle."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Kun superbrugere kan oprette nye brugere"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Ugyldig værdi"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Datafil"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Vælg datafilen til upload"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Filtype ikke understøttet"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Filen er for stor"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Ingen kolonner fundet i fil"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Ingen datarækker fundet i fil"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Ingen data-rækker angivet"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Ingen data-kolonner angivet"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Mangler påkrævet kolonne: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikeret kolonne: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Eksternt billede"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL til ekstern billedfil"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Download af billeder fra ekstern URL er ikke aktiveret"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Kontrol af baggrundstjeneste mislykkedes"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "E-mail backend ej konfigureret"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Helbredstjek af InvenTree system mislykkedes"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Ukendt database"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Ugyldig fysisk enhed"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Ikke en gyldig valutakode"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Overskud må ikke være negativ"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Overskuddet må ikke overstige 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Ugyldig værdi for overskud"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Rediger brugerinformation"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Vælg adgangskode"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "De indtastede adgangskoder skal være ens"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Forkert adgangskode indtastet"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Systemoplysninger"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Om InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Overordnet produktion"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Produktion skal anulleres, før den kan slettes"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Forbrugsvare"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Valgfri"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Sporet"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Allokeret"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Allokeret"
msgid "Available"
msgstr "Tilgængelig"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Del"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Produktionsordre"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Produktionsordre"
msgid "Build Orders"
msgstr "Produktionsordrer"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Ugyldigt valg for overordnet produktion"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "Byggeordre enhed kan ikke ændres"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Produktionsordre reference"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Produktionsordre som er tildelt denne produktion"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Del"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Vælg dele til produktion"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Salgsordrereference"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Salgsordre, som er tildelt denne produktion"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Kilde Lokation"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Destinations Placering"
-#: build/models.py:302
+#: build/models.py:301
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:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Produktions antal"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Antal lagervarer som skal produceres"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Afsluttede elementer"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Antal lagervarer som er færdiggjort"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Produktions Status"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Produktions statuskode"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Batch Kode"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Batch kode til dette produktions output"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Oprettelsesdato"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Projekteret afslutningsdato"
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Dato for afslutning"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "udført af"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Udstedt af"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Bruger som udstedte denne byggeordre"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Ansvarlig"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Bruger eller gruppe ansvarlig for denne byggeordre"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Ekstern link"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Link til ekstern URL"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Bygge Prioritet"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Prioritet af denne byggeordre"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr "Bygningsordre {build} er fuldført"
msgid "A build order has been completed"
msgstr "En byggeordre er fuldført"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Ikke tilladt"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Accepter som forbrugt af denne byggeordre"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Accepter Ikke tildelt"
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Accepter at lagervarer ikke er fuldt tildelt til denne byggeordre"
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Accepter ufuldført"
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Bygge linje"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Afventende"
@@ -1722,21 +1750,21 @@ msgstr "Afventende"
msgid "Production"
msgstr "Produktion"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Annulleret"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Fuldført"
@@ -1744,165 +1772,162 @@ msgstr "Fuldført"
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Vis QR-kode"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Bruger"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Vedhæftning"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Manglende fil"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Manglende eksternt link"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Vælg fil, der skal vedhæftes"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Kommentar"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Filnavn"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Placeret"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Afsendt"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Mistet"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Returneret"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Igangværende"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Retur"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Reparér"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Erstat"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Refusion"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Afvis"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Kontrol af baggrundstjeneste mislykkedes"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Afvist"
msgid "Quarantined"
msgstr "I karantæne"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Forældet lager sporings post"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Lager-element oprettet"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Redigeret lager-element"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Serienummer tildelt"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Lagerbeholdning optalt"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Lagerbeholdning tilføjet manuelt"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Lagerbeholdning fjernet manuelt"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Lokation ændret"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Lager opdateret"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Monteret i samling"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Fjernet fra samling"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Installeret komponent element"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Fjernet komponent element"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Opdel fra overordnet element"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Opdel underordnet element"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Flettede lagervarer"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Konverteret til variant"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Byggeordre output genereret"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Byggeorder output fuldført"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Brugt efter byggeordre"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Afsendt mod salgsordre"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Modtaget mod indkøbsordre"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Returneret mod returordre"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Sendt til kunde"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Returneret fra kunde"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po
index c5b448f007..915b0c4555 100644
--- a/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/de/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: de\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API-Endpunkt nicht gefunden"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Benutzer hat keine Berechtigung, dieses Modell anzuzeigen"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Ungültige Einheit angegeben ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Kein Wert angegeben"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Konnte {original} nicht in {unit} umwandeln"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "Ungültige Menge"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Keine gültige Menge"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Ungültige Menge ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Fehlerdetails finden Sie im Admin-Panel"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Datum eingeben"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Notizen"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Wert '{name}' hält das Musterformat nicht ein"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Angegebener Wert entspricht nicht dem benötigten Muster: "
@@ -132,397 +140,409 @@ msgstr "MFA Registrierung ist deaktiviert."
msgid "The provided primary email address is not valid."
msgstr "Die angegebene primäre E-Mail-Adresse ist ungültig."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registrierung ist deaktiviert."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Keine gültige Menge"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Keine Seriennummer angegeben"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplizierter Seriennummer"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Ungültiger Gruppenbereich: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Gruppenbereich {group} überschreitet die zulässige Menge ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Ungültige Gruppensequenz: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Keine Seriennummern gefunden"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
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:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Entferne HTML-Tags von diesem Wert"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Verbindungsfehler"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Server antwortete mit ungültigem Statuscode"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Ausnahme aufgetreten"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Server antwortete mit ungültigem Wert für die Inhaltslänge"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Bild ist zu groß"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Bilddownload überschreitet maximale Größe"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Remote-Server gab leere Antwort zurück"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Angegebene URL ist kein gültiges Bild"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Arabisch"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgarisch"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Tschechisch"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Dänisch"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Deutsch"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Griechisch"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Englisch"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spanisch"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spanisch (Mexikanisch)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Estnisch"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Persisch"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Beenden"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Französisch"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebräisch"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hinduistisch"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Ungarisch"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italienisch"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japanisch"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Koreanisch"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Lettisch"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Niederländisch"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norwegisch"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polnisch"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugiesisch"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugiesisch (Brasilien)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Rumänisch"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Slowakisch"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Slowenisch"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbisch"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Schwedisch"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thailändisch"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Türkisch"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ukrainisch"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamesisch"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Chinesisch (Vereinfacht)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Chinesisch (Traditionell)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] In App einloggen"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Email"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Fehler beim Ausführen der Plugin Validierung"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Metadaten müssen ein Python-Dict Objekt sein"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Plugin Metadaten"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON-Metadatenfeld, für die Verwendung durch externe Plugins"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Falsch formatiertes Muster"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Unbekannter Formatschlüssel angegeben"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Erforderlicher Formatschlüssel fehlt"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Referenz-Feld darf nicht leer sein"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Referenz muss erforderlichem Muster entsprechen"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Referenznummer ist zu groß"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Ungültige Auswahl"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Name"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Beschreibung"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Beschreibung (optional)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Pfad"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Markdown Notizen (optional)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Barcode-Daten"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Drittanbieter-Barcode-Daten"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Barcode-Hash"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Eindeutiger Hash der Barcode-Daten"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Bestehender Barcode gefunden"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Serverfehler"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Ein Fehler wurde vom Server protokolliert."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Muss eine gültige Nummer sein"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Währung"
msgid "Select currency from available options"
msgstr "Währung aus verfügbaren Optionen auswählen"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Benutzername"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Vorname"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "Vorname des Benutzers"
@@ -552,30 +572,30 @@ msgstr "Nachname"
msgid "Last name of the user"
msgstr "Nachname des Benutzers"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "E-Mailadresse des Benutzers"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Mitarbeiter"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr "Hat der Benutzer die Mitarbeiter Berechtigung"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Administrator"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr "Ist dieser Benutzer ein Administrator"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr "Ist dieser Benutzer ein Administrator"
msgid "Active"
msgstr "Aktiv"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Ist dieses Benutzerkonto aktiv"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Sie haben keine Berechtigung, diese Benutzerrolle zu ändern."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Nur Superuser können neue Benutzer erstellen"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Ihr Konto wurde erstellt."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Bitte benutzen Sie die Passwort-zurücksetzen-Funktion, um sich anzumelden"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Willkommen bei InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Ungültiger Wert"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Datendatei"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Neue Datei zum Hochladen auswählen"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Nicht unterstütztes Dateiformat"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Datei ist zu groß"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Keine Spalten in der Datei gefunden"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Keine Datensätze in der Datei gefunden"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Keine Zeilen ausgewählt"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Keine Spalten angegeben"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Erforderliche Spalte '{name}' fehlt"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Doppelte Spalte: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Grafiken aus externen Quellen"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL der Remote-Bilddatei"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Das Herunterladen von Bildern von Remote-URLs ist nicht aktiviert"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "E-Mail-Backend nicht konfiguriert"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "InvenTree Status-Überprüfung fehlgeschlagen"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Unbekannte Datenbank"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Ungültige physikalische Einheit"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Kein gültiger Währungscode"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Überschuss-Wert darf nicht negativ sein"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Überschuss darf 100% nicht überschreiten"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Ungültiger Wert für Ausschuss"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Benutzerinformationen bearbeiten"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Passwort setzen"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Passwörter stimmen nicht überein"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Falsches Passwort angegeben"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Systeminformationen"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Über InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr "Mehrstufig"
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Eltern-Bauauftrag"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr "Varianten einschließen"
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr "Vorgänger-Build"
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr "Mir zugewiesen"
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Aufgegeben von"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
-msgstr ""
+msgstr "Zugewiesen zu"
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Bauauftrag muss abgebrochen werden, bevor er gelöscht werden kann"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Verbrauchsmaterial"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Optional"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Baugruppe"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Nachverfolgt"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
-msgstr ""
+msgstr "Prüfbar"
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Zugeordnet"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Zugeordnet"
msgid "Available"
msgstr "Verfügbar"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Teil"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Bauauftrag"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Bauauftrag"
msgid "Build Orders"
msgstr "Bauaufträge"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
-msgstr ""
+msgstr "Die Stückliste wurde noch nicht kontrolliert"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
-msgstr ""
+msgstr "Baureihenfolge kann nicht für ein inaktives Teil erstellt werden"
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
-msgstr ""
+msgstr "Baureihenfolge kann nicht für ein inaktives Teil erstellt werden"
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Ungültige Wahl für übergeordneten Bauauftrag"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr "Verantwortlicher Benutzer oder Gruppe muss angegeben werden"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "Teil in Bauauftrag kann nicht geändert werden"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Bauauftragsreferenz"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Referenz"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Kurze Beschreibung des Baus (optional)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Teil"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Teil für den Bauauftrag wählen"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Auftrag Referenz"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Bestellung, die diesem Bauauftrag zugewiesen ist"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Quell-Lagerort"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Ziel-Lagerort"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Lagerort an dem fertige Objekte gelagert werden auswählen"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Bau-Anzahl"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Anzahl der zu bauenden Lagerartikel"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Fertiggestellte Teile"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Anzahl der fertigen Lagerartikel"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Bauauftrags-Status"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Bau-Statuscode"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Losnummer"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Losnummer für dieses Endprodukt"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Erstelldatum"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "geplantes Fertigstellungsdatum"
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Zieldatum für Bauauftrag-Fertigstellung."
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Fertigstellungsdatum"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "Fertiggestellt von"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Aufgegeben von"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Nutzer der diesen Bauauftrag erstellt hat"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Verantwortlicher Benutzer"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Benutzer oder Gruppe verantwortlich für diesen Bauauftrag"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Externer Link"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Link zu einer externen URL"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Bauauftrags-Priorität"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Priorität dieses Bauauftrags"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Projektcode"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Projektcode für diesen Auftrag"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr "Fehler beim Abladen der Aufgabe, um die Build-Allokation abzuschließen"
@@ -1110,610 +1129,619 @@ msgstr "Bauauftrag {build} wurde fertiggestellt"
msgid "A build order has been completed"
msgstr "Ein Bauauftrag wurde fertiggestellt"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr "Seriennummern müssen für nachverfolgbare Teile angegeben werden"
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "kein Endprodukt angegeben"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Endprodukt bereits hergstellt"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "Menge kann nicht größer als die Ausgangsmenge sein"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr "Build Ausgabe {serial} hat nicht alle erforderlichen Tests bestanden"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Objekt bauen"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Anzahl"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Erforderliche Menge für Auftrag"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "BestandObjekt ist zu oft zugewiesen"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Reserviermenge muss größer null sein"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Lagerartikel"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Quell-Lagerartikel"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Installiere in"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Ziel-Lagerartikel"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Name des Teils"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Endprodukt"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "Endprodukt stimmt nicht mit übergeordnetem Bauauftrag überein"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "Endprodukt entspricht nicht dem Teil des Bauauftrags"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Dieses Endprodukt wurde bereits fertiggestellt"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Dieses Endprodukt ist nicht vollständig zugewiesen"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Menge der Endprodukte angeben"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Ganzzahl für verfolgbare Teile erforderlich"
-#: build/serializers.py:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Seriennummer"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Seriennummer für dieses Endprodukt eingeben"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Lagerort"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr "Lagerort für Bauprodukt"
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Seriennummern automatisch zuweisen"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Benötigte Lagerartikel automatisch mit passenden Seriennummern zuweisen"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr "Seriennummern müssen für nachverfolgbare Teile angegeben werden"
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig"
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Eine Liste von Endprodukten muss angegeben werden"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Lagerort für ausgemusterte Ausgänge"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Zuteilungen verwerfen"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Bestandszuteilung für ausgemusterte Endprodukte verwerfen"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Grund für das Verwerfen des Bauauftrages/der Bauaufträge"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Lagerort für fertige Endprodukte"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Status"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Unvollständige Zuweisung akzeptieren"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Endprodukte fertigstellen, auch wenn Bestand nicht fertig zugewiesen wurde"
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr "Zugewiesen Bestand verbrauchen"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr "Verbrauche alle Bestände, die diesem Bauauftrag bereits zugewiesen wurden"
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Unfertige Endprodukte entfernen"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "Lösche alle noch nicht abgeschlossenen Endprodukte"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Nicht erlaubt"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Als von diesem Bauauftrag verbraucht setzen"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Bestandszuordnung vor dem Abschluss dieses Bauauftrags freigeben"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Überbelegter Lagerbestand"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Der Bestand einiger Lagerartikel ist überbelegt"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Nicht zugewiesene akzeptieren"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Unvollständig Zuweisung akzeptieren"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "Bauauftrag hat unvollständige Aufbauten"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Bauauftragsposition"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Endprodukt"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "Endprodukt muss auf den gleichen Bauauftrag verweisen"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Bauauftragspositionsartikel"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "Teil muss auf Lager sein"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Verfügbare Menge ({q}) überschritten"
-#: build/serializers.py:955
+#: build/serializers.py:999
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:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Zuweisungen müssen angegeben werden"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Lagerort, von dem Teile bezogen werden sollen (leer lassen, um sie von jedem Lagerort zu nehmen)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Lagerort ausschließen"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Lagerartikel vom ausgewählten Ort ausschließen"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Wechselbares Lagerbestand"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Lagerartikel an mehreren Standorten können austauschbar verwendet werden"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Ersatzbestand"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Zuordnung von Ersatzteilen erlauben"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Optionale Positionen"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr "Fehler beim Starten der automatischen Zuweisung"
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Hersteller-Teilenummer"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr "Ortsname"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Verpackungen"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "Teil-ID"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr "Teil IPN"
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Beschreibung des Teils"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Seriennummer"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr "Zugewiesene Menge"
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr "Verfügbare Menge"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Nachverfolgbar"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr "Vererbt"
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr "Varianten zulassen"
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Stücklisten-Position"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Zugewiesener Bestand"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "Bestellt"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr "In Produktion"
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr "Verfügbarer Bestand"
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr "Verfügbares Ersatzmaterial"
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr "Externes Lager"
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Verfügbarer Bestand"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr "Verfügbares Ersatzmaterial"
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Ausstehend"
@@ -1722,21 +1750,21 @@ msgstr "Ausstehend"
msgid "Production"
msgstr "in Arbeit"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Storniert"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Fertig"
@@ -1744,165 +1772,162 @@ msgstr "Fertig"
msgid "Stock required for build order"
msgstr "Bestand für Bauauftrag erforderlich"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Überfälliger Bauauftrag"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr "Bauauftrag {bo} ist jetzt überfällig"
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Miniaturansicht"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Barcode Aktionen"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "QR-Code anzeigen"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Barcode abhängen"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Barcode anhängen"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Aktionen drucken"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Bauauftragsbericht drucken"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Bau-Auftrag Aktionen"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Bauauftrag bearbeiten"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Bauauftrag duplizieren"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Bauauftrag abbrechen"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Bauauftrag löschen"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Bauauftrag fertigstellen"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Baubeschreibung"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Es wurden keine Endprodukte für diesen Bauauftrag erstellt"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Bauauftrag ist bereit abgeschlossen zu werden"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Bauauftrag kann nicht abgeschlossen werden, da es noch ausstehende Endprodukte gibt"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Benötigte Teil-Anzahl wurde noch nicht fertiggestellt"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Zieldatum"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Bauauftrag war fällig am %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Bauauftrag war fällig am %(target)s"
msgid "Overdue"
msgstr "Überfällig"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Fertiggestellte Endprodukte"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Auftrag"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Priorität"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Bauauftrag löschen"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Bauftrags-QR-Code"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Barcode mit Bauauftrag verknüpfen"
@@ -1968,8 +1994,9 @@ 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:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Ziel-Lager"
@@ -1981,23 +2008,24 @@ msgstr "Ziel-Lagerort nicht angegeben"
msgid "Allocated Parts"
msgstr "Zugewiesene Teile"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Losnummer"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Erstellt"
@@ -2005,8 +2033,8 @@ 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Fertig"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr "Benötigte Teile bestellen"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Teile bestellen"
@@ -2120,7 +2148,7 @@ msgstr "Neuer Bauauftrag"
msgid "Build Order Details"
msgstr "Bauauftragdetails"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr "Unfertige Endprodukte"
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr "Link"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr "Datei"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr "Benutzer hat keine Berechtigung zum Löschen des Anhangs"
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr "Ungültiges Währungskürzel"
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr "Doppeltes Währungskürzel"
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Kein Plugin"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Nicht unterstütztes Dateiformat: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fehler beim Lesen der Datei (ungültige Kodierung)"
@@ -2192,1883 +2215,2039 @@ msgstr "Fehler beim Lesen der Datei (falsche Größe)"
msgid "Error reading file (data could be corrupted)"
msgstr "Fehler beim Lesen der Datei (Daten könnten beschädigt sein)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Datei"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Datei zum Hochladen auswählen"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Datei"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "{name} Datei zum Hochladen auswählen"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Aktualisiert"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Zeitstempel der letzten Aktualisierung"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr "Seiten-URL ist durch die Konfiguration gesperrt"
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Eindeutiger Projektcode"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Projektbeschreibung"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr "Benutzer oder Gruppe verantwortlich für dieses Projekt"
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
-msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Einstellungs-Wert"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "Wert ist keine gültige Option"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "Wahrheitswert erforderlich"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "Nur Ganzzahl eingeben"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "Schlüsseltext muss eindeutig sein"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Keine Gruppe"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Neustart erforderlich"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Ausstehende Migrationen"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr "Anzahl der ausstehenden Datenbankmigrationen"
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Name der Serverinstanz"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Kurze Beschreibung der Instanz"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Name der Instanz verwenden"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Den Namen der Instanz in der Titelleiste verwenden"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Anzeige von `Über` einschränken"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Zeige das `Über` Fenster nur Administratoren"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Firmenname"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "interner Firmenname"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "Basis-URL"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "Basis-URL für dieses Instanz"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Standardwährung"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr "Verfügbare Währungen"
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr "Liste der unterstützten Währungskürzel"
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr "Währungsaktualisierungsintervall"
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Wie oft Wechselkurse aktualisiert werden sollen (auf Null zum Deaktivieren setzen)"
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "Tage"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr "Währungs-Aktualisierungs-Plugin"
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin"
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Von URL herunterladen"
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt"
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Download-Größenlimit"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Maximal zulässige Größe für heruntergeladene Bilder"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "Benutzer-Agent zum Herunterladen von Daten"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr "Strenge URL-Prüfung"
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs"
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Bestätigung verpflichtend"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Baumtiefe"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Prüfungsintervall aktualisieren"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automatische Sicherung"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren"
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Intervall für automatische Sicherung"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr "Anzahl der Tage zwischen automatischen Sicherungen"
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Aufgabenlöschinterval"
-#: common/models.py:1369
+#: common/models.py:1426
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:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Löschintervall für Fehlerprotokolle"
-#: common/models.py:1378
+#: common/models.py:1435
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:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Löschintervall für Benachrichtigungen"
-#: common/models.py:1387
+#: common/models.py:1444
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:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Bacode-Feature verwenden"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren"
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Barcode-Eingabeverzögerung"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Verzögerungszeit bei Barcode-Eingabe"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Barcode Webcam-Unterstützung"
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr "Barcode-Scannen über Webcam im Browser erlauben"
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Artikelrevisionen"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Revisions-Feld für Artikel aktivieren"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr "Löschen aus Baugruppe erlauben"
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr "Erlaube das Löschen von Teilen, die in einer Baugruppe verwendet werden"
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr "IPN Regex"
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "RegEx Muster für die Zuordnung von Teil-IPN"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Mehrere Artikel mit gleicher IPN erlaubt"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Ändern von IPN erlaubt"
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt"
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Teil-Stückliste kopieren"
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird "
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Teil-Parameter kopieren"
-#: common/models.py:1466
+#: common/models.py:1535
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:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Teil-Testdaten kopieren"
-#: common/models.py:1472
+#: common/models.py:1541
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:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Kategorie-Parametervorlage kopieren"
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird"
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Vorlage"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Teile sind standardmäßig Vorlagen"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Komponente"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "Teile können standardmäßig in Baugruppen benutzt werden"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Kaufbar"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Artikel sind grundsätzlich kaufbar"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Verkäuflich"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Artikel sind grundsätzlich verkaufbar"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Artikel sind grundsätzlich verfolgbar"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Virtuell"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Teile sind grundsätzlich virtuell"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Import in Ansichten anzeigen"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Importassistent in einigen Teil-Ansichten anzeigen"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Verwandte Teile anzeigen"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Verwandte Teile eines Teils anzeigen"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Initialer Lagerbestand"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Initiale Lieferantendaten"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Anzeigeformat für Teilenamen"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Format für den Namen eines Teiles"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Standardsymbol der Teilkategorie"
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)"
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Parameter Einheiten durchsetzen"
-#: common/models.py:1566
+#: common/models.py:1635
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:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Dezimalstellen für minimalen Preis"
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten"
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr "Dezimalstellen für maximalen Preis"
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Maximale Anzahl der Dezimalstellen bei der Darstellung der Preisdaten"
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Zulieferer-Preise verwenden"
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen"
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Kaufverlauf überschreiben"
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise"
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Lagerartikel-Preis verwenden"
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Preise aus manuell eingegebenen Lagerdaten für Preisberechnungen verwenden"
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Lagerartikelpreis Alter"
-#: common/models.py:1624
+#: common/models.py:1693
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:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Variantenpreise verwenden"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Nur aktive Varianten"
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Nur aktive Variantenteile zur Berechnung der Variantenbepreisung verwenden"
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Intervall für Neuberechnung von Preisen"
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr "Anzahl der Tage bis die Teile-Preisberechnungen automatisch aktualisiert werden"
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Interne Preise"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Interne Preise für Teile aktivieren"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Interne Preisüberschreibung"
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen"
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Labeldruck aktivieren"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Labeldruck über die Website aktivieren"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "Label Bild DPI"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Berichte aktivieren"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Berichterstellung aktivieren"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Entwickler-Modus"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Berichte im Entwickler-Modus generieren (als HTML)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr "Berichtsfehler protokollieren"
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr "Fehler, die beim Erstellen von Berichten auftreten, protokollieren"
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Seitengröße"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Standardseitenformat für PDF-Bericht"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Testberichte aktivieren"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Erstellung von Test-Berichten aktivieren"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Testberichte anhängen"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Global einzigartige Seriennummern"
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr "Seriennummern für Lagerartikel müssen global eindeutig sein"
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Seriennummern automatisch ausfüllen"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Seriennummern in Formularen automatisch ausfüllen"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Erschöpften Lagerartikel löschen"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel aufgebraucht ist"
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Losnummer Vorlage"
-#: common/models.py:1742
+#: common/models.py:1797
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:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Bestands-Ablauf"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Ablaufen von Bestand ermöglichen"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Abgelaufenen Bestand verkaufen"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Verkauf von abgelaufenem Bestand erlaubt"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Bestands-Stehzeit"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Abgelaufenen Bestand verbauen"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Verbauen von abgelaufenen Bestand erlaubt"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Bestands-Eigentümerkontrolle"
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr "Eigentümerkontrolle für Lagerorte und Teile aktivieren"
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Standardsymbol für Lagerort"
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr "Standardsymbol für Lagerstandort (leer bedeutet kein Symbol)"
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Zeige installierte Lagerartikel"
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen"
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr "Prüfe BOM bei der Installation von Elementen"
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr "Installierte Lagerbestandteile müssen im BOM für den übergeordneten Teil vorhanden sein"
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr "Erlaube Verschieben von \"nicht auf Lager\" Bestand"
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr "Lagerartikel, die nicht auf Lager sind, können zwischen Lagerstandorten übertragen werden"
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Bauauftragsreferenz-Muster"
-#: common/models.py:1810
+#: common/models.py:1865
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:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr "Verantwortlicher Besitzer erforderlich"
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr "Jeder Bestellung muss ein verantwortlicher Besitzer zugewiesen werden"
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr "Blockieren bis Test bestanden"
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr "Verhindert die Fertigstellung bis alle erforderlichen Tests bestanden sind"
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Rücksendungen aktivieren"
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche"
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Referenz Muster für Rücksendungen"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr "Benötigtes Muster für die Generierung des Referenzfeldes für Rücksendungen"
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Abgeschlossene Rücksendungen bearbeiten"
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben"
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Auftragsreferenz-Muster"
-#: common/models.py:1888
+#: common/models.py:1943
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:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Auftrag Standardsendung"
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr "Erstelle eine Standardsendung für Aufträge"
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Abgeschlossene Aufträge bearbeiten"
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Bearbeitung von Aufträgen nach Versand oder Abschluss erlauben"
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr "Versendete Bestellungen als abgeschlossen markieren"
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr "Als versendet markierte Aufträge werden automatisch abgeschlossen und überspringen den Status \"Versandt\""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Bestellungsreferenz-Muster"
-#: common/models.py:1924
+#: common/models.py:1979
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:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Abgeschlossene Einkaufsaufträge bearbeiten"
-#: common/models.py:1938
+#: common/models.py:1993
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:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr "Bestellungen automatisch abschließen"
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Bestellung automatisch als abgeschlossen markieren, wenn der Empfang aller Artikel bestätigt wurde"
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Passwort vergessen aktivieren"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren"
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Registrierung erlauben"
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren"
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "SSO aktivieren"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "SSO auf den Anmeldeseiten aktivieren"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "SSO Selbstregistrierung aktivieren"
-#: common/models.py:1973
+#: common/models.py:2028
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:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr "SSO Gruppensynchronisation aktivieren"
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr "SSO Gruppenschlüssel"
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Email-Adresse erforderlich"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "SSO-Benutzer automatisch ausfüllen"
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen"
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "E-Mail zweimal"
-#: common/models.py:2026
+#: common/models.py:2081
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:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Passwort zweimal"
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen"
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Erlaubte Domains"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)"
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Gruppe bei Registrierung"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "MFA erzwingen"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Plugins beim Start prüfen"
-#: common/models.py:2061
+#: common/models.py:2116
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:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr "Nach Plugin-Aktualisierungen suchen"
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr "Periodische Überprüfungen auf Updates für installierte Plugins aktivieren"
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "URL-Integration aktivieren"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Plugins zum Hinzufügen von URLs aktivieren"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Navigations-Integration aktivieren"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Plugins zur Integration in die Navigation aktivieren"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "App-Integration aktivieren"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Plugins zum Hinzufügen von Apps aktivieren"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Terminplan-Integration aktivieren"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Geplante Aufgaben aktivieren"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Ereignis-Integration aktivieren"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Projektcodes aktivieren"
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten"
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Inventurfunktionen"
-#: common/models.py:2119
+#: common/models.py:2181
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:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr "Externe Standorte ausschließen"
-#: common/models.py:2127
+#: common/models.py:2189
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:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Automatische Inventur-Periode"
-#: common/models.py:2135
+#: common/models.py:2197
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:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr "Löschintervall für Berichte"
-#: common/models.py:2143
+#: common/models.py:2205
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:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr "Vollständige Namen von Benutzern anzeigen"
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen"
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr "Teststation-Daten aktivieren"
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr "Teststation-Datenerfassung für Testergebnisse aktivieren"
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)"
+#: common/models.py:2224
+msgid "Create Template on Upload"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
+
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen"
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Abonnierte Teile anzeigen"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Zeige abonnierte Teile auf der Startseite"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Abonnierte Kategorien anzeigen"
-#: common/models.py:2227
+#: common/models.py:2294
msgid "Show subscribed part categories on the homepage"
msgstr "Zeige abonnierte Teilkategorien auf der Startseite"
-#: common/models.py:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Neueste Teile anzeigen"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Zeige neueste Teile auf der Startseite"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
msgstr "Zeige ungültige Stücklisten"
-#: common/models.py:2239
+#: common/models.py:2306
msgid "Show BOMs that await validation on the homepage"
msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite"
-#: common/models.py:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Neueste Bestandänderungen anzeigen"
-#: common/models.py:2245
+#: common/models.py:2312
msgid "Show recently changed stock items on the homepage"
msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite"
-#: common/models.py:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Niedrigen Bestand anzeigen"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Zeige geringen Bestand auf der Startseite"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Lerren Bestand anzeigen"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Benötigten Bestand anzeigen"
-#: common/models.py:2263
+#: common/models.py:2330
msgid "Show stock items needed for builds on the homepage"
msgstr "Zeige Bestand für Bauaufträge auf der Startseite"
-#: common/models.py:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Abgelaufenen Bestand anzeigen"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Zeige abgelaufene Lagerbestände auf der Startseite"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Alten Bestand anzeigen"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Zeige überfällige Lagerartikel auf der Startseite"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Ausstehende Bauaufträge anzeigen"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Zeige ausstehende Bauaufträge auf der Startseite"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Zeige überfällige Bauaufträge"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Zeige überfällige Bauaufträge auf der Startseite"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Ausstehende POs anzeigen"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Zeige ausstehende POs auf der Startseite"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Überfällige POs anzeigen"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Zeige überfällige POs auf der Startseite"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Ausstehende SOs anzeigen"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Zeige ausstehende SOs auf der Startseite"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Überfällige SOs anzeigen"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Zeige überfällige SOs auf der Startseite"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
msgstr "Ausstehende Versandaufträge anzeigen"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen"
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Zeige Neuigkeiten"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Neuigkeiten auf der Startseite anzeigen"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Label inline anzeigen"
-#: common/models.py:2330
+#: common/models.py:2397
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:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Standard-Etikettendrucker"
-#: common/models.py:2338
+#: common/models.py:2405
msgid "Configure which label printer should be selected by default"
msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren"
-#: common/models.py:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Berichte inline anzeigen"
-#: common/models.py:2346
+#: common/models.py:2413
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:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Teile suchen"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
msgstr "Teile in der Suchvorschau anzeigen"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Zulieferteile durchsuchen"
-#: common/models.py:2359
+#: common/models.py:2426
msgid "Display supplier parts in search preview window"
msgstr "Zuliefererteile in der Suchvorschau anzeigen"
-#: common/models.py:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Herstellerteile durchsuchen"
-#: common/models.py:2365
+#: common/models.py:2432
msgid "Display manufacturer parts in search preview window"
msgstr "Herstellerteile in der Suchvorschau anzeigen"
-#: common/models.py:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Inaktive Teile ausblenden"
-#: common/models.py:2371
+#: common/models.py:2438
msgid "Excluded inactive parts from search preview window"
msgstr "Inaktive Teile in der Suchvorschau ausblenden"
-#: common/models.py:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Kategorien durchsuchen"
-#: common/models.py:2377
+#: common/models.py:2444
msgid "Display part categories in search preview window"
msgstr "Teilekategorien in der Suchvorschau anzeigen"
-#: common/models.py:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Bestand durchsuchen"
-#: common/models.py:2383
+#: common/models.py:2450
msgid "Display stock items in search preview window"
msgstr "Lagerartikel in Suchvorschau anzeigen"
-#: common/models.py:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Nicht verfügbare Artikel ausblenden"
-#: common/models.py:2390
+#: common/models.py:2457
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:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Lagerorte durchsuchen"
-#: common/models.py:2397
+#: common/models.py:2464
msgid "Display stock locations in search preview window"
msgstr "Lagerorte in Suchvorschau anzeigen"
-#: common/models.py:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Firmen durchsuchen"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Firmen in der Suchvorschau anzeigen"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Bauaufträge durchsuchen"
-#: common/models.py:2409
+#: common/models.py:2476
msgid "Display build orders in search preview window"
msgstr "Bauaufträge in der Suchvorschau anzeigen"
-#: common/models.py:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Bestellungen durchsuchen"
-#: common/models.py:2415
+#: common/models.py:2482
msgid "Display purchase orders in search preview window"
msgstr "Bestellungen in der Suchvorschau anzeigen"
-#: common/models.py:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Inaktive Bestellungen ausblenden"
-#: common/models.py:2422
+#: common/models.py:2489
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden"
-#: common/models.py:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Aufträge durchsuchen"
-#: common/models.py:2429
+#: common/models.py:2496
msgid "Display sales orders in search preview window"
msgstr "Aufträge in der Suchvorschau anzeigen"
-#: common/models.py:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Inaktive Aufträge ausblenden"
-#: common/models.py:2436
+#: common/models.py:2503
msgid "Exclude inactive sales orders from search preview window"
msgstr "Inaktive Aufträge in der Suchvorschau ausblenden"
-#: common/models.py:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Suche nach Rücksendungen"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr "Rücksendungen in der Suchvorschau anzeigen"
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr "Inaktive Rücksendungen ausblenden"
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden"
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Anzahl Suchergebnisse"
-#: common/models.py:2458
+#: common/models.py:2525
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:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Regex Suche"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren"
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr "Ganzes Wort suchen"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen"
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "zeige Bestand in Eingabemasken"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "Esc-Taste schließt Formulare"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Benutze die Esc-Taste, um Formulare zu schließen"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Fixierter Navigationsleiste"
-#: common/models.py:2489
+#: common/models.py:2556
msgid "The navbar position is fixed to the top of the screen"
msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren"
-#: common/models.py:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Datumsformat"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Bevorzugtes Format für die Anzeige von Daten"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Teilzeitplanung"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Zeige Zeitplanung für Teile"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventur"
-#: common/models.py:2516
+#: common/models.py:2583
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)"
-#: common/models.py:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Zeichenkettenlänge in Tabellen"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maximale Länge für Zeichenketten, die in Tabellenansichten angezeigt werden"
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr "Fehlerberichte empfangen"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr "Benachrichtigungen bei Systemfehlern erhalten"
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr "Zuletzt verwendete Druckmaschinen"
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr "Die zuletzt benutzten Druckmaschinen für einen Benutzer speichern"
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Benutzer"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr "Preisstaffelungs Anzahl"
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Preis"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr "Stückpreis für die angegebene Anzahl"
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr "Endpunkt"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Endpunkt, an dem dieser Webhook empfangen wird"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Name für diesen Webhook"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Ist dieser Webhook aktiv"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr "Token"
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Token für Zugang"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Geheimnis"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Shared Secret für HMAC"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "Nachrichten-ID"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Eindeutige Kennung für diese Nachricht"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr "Host"
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Host von dem diese Nachricht empfangen wurde"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Kopfzeile"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Header dieser Nachricht"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Body"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Body dieser Nachricht"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Endpunkt, über den diese Nachricht empfangen wurde"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Bearbeitet"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr "ID"
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Titel"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Link"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Veröffentlicht"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Zusammenfassung"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Gelesen"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "Wurde diese Nachricht gelesen?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Bilddatei"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr "Einheitsname muss eine gültige Kennung sein"
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr "Einheitsname"
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbol"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr "Optionales Einheitssymbol"
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definition"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr "Einheitsdefinition"
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Anhang"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Fehlende Datei"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Fehlender externer Link"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Datei zum Anhängen auswählen"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Kommentar"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr "Upload Datum"
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr "Datum der hochgeladenen Datei"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr "Dateigröße"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr "Dateigröße in Bytes"
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr "Ungültiger Modelltyp für Anhang angegeben"
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr "Schlüssel"
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr "Wert"
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr "Zeitstempel"
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Kontext"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Ergebnis"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Neue {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr "Eine neue Bestellung wurde erstellt und Ihnen zugewiesen"
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr "{verbose_name} storniert"
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr "Eine Bestellung, die Ihnen zugewiesen war, wurde storniert"
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr "Artikel erhalten"
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr "Artikel wurden aus einer Bestellung erhalten"
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr "Artikel wurden aus einer Rücksendung erhalten"
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr "Fehler in Plugin aufgetreten"
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr "Wird ausgeführt"
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr "Anstehende Aufgaben"
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr "Geplante Aufgaben"
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr "Fehlgeschlagene Aufgaben"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr "Aufgabe-ID"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr "Eindeutige Aufgaben-ID"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr "Sperren"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr "Sperrzeit"
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr "Aufgabenname"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr "Funktion"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr "Funktionsname"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr "Parameter"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr "Aufgaben-Parameter"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr "Schlüsselwort Parameter"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr "Schlüsselwort Parameter für Aufgaben"
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Dateiname"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr "Modelltyp"
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr "Benutzer hat keine Berechtigung, Anhänge für dieses Modell zu erstellen oder zu bearbeiten"
@@ -4116,15 +4295,15 @@ msgstr "Übereinstimmende Felder"
msgid "Match Items"
msgstr "Positionen zuordnen"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Felder zuteilen fehlgeschlagen"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Teile importiert"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr "Internes Teil ist aktiv"
msgid "Supplier is Active"
msgstr "Lieferant ist aktiv"
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Firma"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Firmen"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Firmenbeschreibung"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "Firmenbeschreibung"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Webseite"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Firmenwebsite Adresse/URL"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Kontakt-Tel."
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Kontakt-Telefon"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Kontakt-Email"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Kontakt"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Anlaufstelle"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Link auf externe Firmeninformation"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr "Ist dieses Unternehmen aktiv?"
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr "Ist Kunde"
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "Verkaufen Sie Teile an diese Firma?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr "Ist Zulieferer"
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "Kaufen Sie Teile von dieser Firma?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr "Ist Hersteller"
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Produziert diese Firma Teile?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Standard-Währung für diese Firma"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Adresse"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr "Adressen"
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr "Firma auswählen"
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr "Adresstitel"
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr "Titel zur Beschreibung des Adresseintrages"
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr "Primäre Adresse"
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr "Als primäre Adresse festlegen"
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr "Linie 1"
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr "Adresszeile 1"
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr "Linie 2"
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr "Adresszeile 2"
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr "Postleitzahl"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr "Stadt/Region"
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr "Postleitzahl Stadt/Region"
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr "Staat/Provinz"
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr "Bundesland"
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr "Land"
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr "Adresse Land"
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr "Versandnotizen"
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr "Notizen für Versandkurier"
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr "Interne Versandnotizen"
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr "Versandnotizen für interne Verwendung"
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr "Link zu Adressinformationen (extern)"
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Herstellerteil"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Basisteil"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Teil auswählen"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Hersteller"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Hersteller auswählen"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr "MPN"
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "Externe URL für das Herstellerteil"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Teilbeschreibung des Herstellers"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr "Teilenummer des Herstellers"
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Parametername"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Wert"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Parameterwert"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Einheiten"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Parametereinheit"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Zuliefererteil"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr "Packeinheiten müssen mit den Basisteileinheiten kompatibel sein"
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr "Packeinheiten müssen größer als Null sein"
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren"
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Zulieferer"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Zulieferer auswählen"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Lagerbestandseinheit (SKU) des Zulieferers"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr "Ist dieser Lieferantenteil aktiv?"
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Herstellerteil auswählen"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "Teil-URL des Zulieferers"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Zuliefererbeschreibung des Teils"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Notiz"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "Basiskosten"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Mindestpreis"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Teile-Verpackungen"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Packmenge"
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr "Gesamtmenge, die in einer einzelnen Packung geliefert wird. Für Einzelstücke leer lassen."
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "Vielfache"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Mehrere bestellen"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Verfügbare Menge von Lieferanten"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Verfügbarkeit aktualisiert"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Datum des letzten Updates der Verfügbarkeitsdaten"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Standard-Währung für diesen Zulieferer"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr "Firmenname"
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "Auf Lager"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr "Inaktiv"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Bestellung anlegen"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Firmeninformation bearbeiten"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Firma bearbeiten"
@@ -4605,11 +4784,12 @@ msgstr "Firma löschen"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Bild von URL herunterladen"
msgid "Delete image"
msgstr "Bild löschen"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Kunde"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Telefon"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr "Bild entfernen"
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr "Verknüpftes Bild von dieser Firma entfernen"
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Entfernen"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr "Bild hochladen"
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr "Bild herunterladen"
@@ -4714,7 +4894,7 @@ msgstr "Zulieferer-Bestand"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Neue Bestellung"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ msgstr "Zugeordneter Bestand"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Hersteller"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Teil bestellen"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Herstellerteil bearbeiten"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Herstellerteil löschen"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Internes Teil"
@@ -4837,8 +5017,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Zugewiesene Lagerartikel"
msgid "Contacts"
msgstr "Kontakte"
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
msgid "Edit Supplier Part"
msgstr "Zuliefererteil bearbeiten"
-#: company/templates/company/supplier_part.html:68
#: company/templates/company/supplier_part.html:69
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Zulieferer-Teil duplizieren"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr "Zuliefererteil entfernen"
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Zuliefererteil entfernen"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Keine Lieferanteninformationen verfügbar"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr "Lieferanten-Teilenummer"
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Zulieferer-Bestand"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Neuen Lagerartikel hinzufügen"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Neuer Lagerartikel"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Zulieferer-Bestellungen"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Preisinformationen ansehen"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Preisstaffel hinzufügen"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr "Zulieferteil QR-Code"
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr "Barcode mit Zulieferteil verknüpfen"
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr "Verfügbarkeit der Teile aktualisieren"
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Lagerartikel"
@@ -5022,99 +5203,99 @@ msgstr "Neuer Kunde"
msgid "New Company"
msgstr "Neue Firma"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Platziert"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr "Ungültiges Exportformat"
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr "Zeitstempel"
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr "Zu importierende Datei"
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr "Spalten"
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr "Importstatus"
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr "Standardwerte"
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr "Wert"
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr "Fehler"
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr "Gültig"
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr "Kopien"
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr "Anzahl der zu druckenden Kopien für jedes Label"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr "Verbunden"
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Unbekannt"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr "Drucken"
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr "Keine Medien"
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr "Verbindung getrennt"
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr "Etikettendrucker"
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr "Drucken Sie Etiketten direkt für verschiedene Artikel."
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr "Druckerstandort"
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr "Den Drucker an einen bestimmten Ort aufstellen"
@@ -5307,79 +5488,75 @@ msgstr "Konfigurationstyp"
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Gesamtpreis"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr "Bestellstatus"
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Bestellreferenz"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr "Ausstehend"
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr "Hat Preise"
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr "Keine passende Bestellung gefunden"
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr "Bestellung"
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr "Bestellung abgeschlossen"
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr "Bestellung ausstehend"
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Bestellung"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr "Rücksendeauftrag"
@@ -5387,751 +5564,782 @@ msgstr "Rücksendeauftrag"
msgid "Total price for this order"
msgstr "Gesamtpreis für diese Bestellung"
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr "Auftragswährung"
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)"
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr "Kontakt stimmt nicht mit der ausgewählten Firma überein"
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr "Auftragsbeschreibung (optional)"
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr "Projektcode für diesen Auftrag auswählen"
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Link auf externe Seite"
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr "Geplantes Lieferdatum für Auftrag."
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr "Erstellt von"
-#: order/models.py:332
+#: order/models.py:339
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:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr "Ansprechpartner für diesen Auftrag"
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr "Firmenadresse für diesen Auftrag"
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Bestell-Referenz"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Bestellungs-Status"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Firma bei der die Teile bestellt werden"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Zulieferer-Referenz"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Zulieferer Bestellreferenz"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "Empfangen von"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Aufgabedatum"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Datum an dem die Bestellung aufgegeben wurde"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Datum an dem der Auftrag fertigstellt wurde"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr "Teile-Zulieferer muss dem Zulieferer der Bestellung entsprechen"
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "Anzahl muss eine positive Zahl sein"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Firma an die die Teile verkauft werden"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Kundenreferenz"
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Bestellreferenz"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Versanddatum"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "Versand von"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr "Bestellung ist bereits abgeschlossen"
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr "Bestellung ist bereits storniert"
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr "Nur ein offener Auftrag kann als abgeschlossen markiert werden"
-#: order/models.py:1088
+#: order/models.py:1105
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:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "Auftrag kann nicht abgeschlossen werden, da es unvollständige Positionen gibt"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Anzahl"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Position - Referenz"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Position - Notizen"
-#: order/models.py:1393
+#: order/models.py:1410
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:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr "Positionsbeschreibung (optional)"
-#: order/models.py:1420
-msgid "Context"
-msgstr "Kontext"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "Zusätzlicher Kontext für diese Zeile"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Stückpreis"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "Lieferantenteil muss mit Lieferant übereinstimmen"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "gelöscht"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Zuliefererteil"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Empfangen"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Empfangene Objekt-Anzahl"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Preis"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Preis pro Einheit"
-#: order/models.py:1536
-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:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr "Ein virtuelles Teil kann nicht einem Auftrag zugeordnet werden"
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr "Nur verkaufbare Teile können einem Auftrag zugewiesen werden"
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Verkaufspreis"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Stückverkaufspreis"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Versendet"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Versendete Menge"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Versanddatum"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr "Lieferdatum"
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr "Versanddatum"
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Kontrolliert von"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Benutzer, der diese Sendung kontrolliert hat"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Sendung"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Sendungsnummer"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Sendungsverfolgungsnummer"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Informationen zur Sendungsverfolgung"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Rechnungsnummer"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Referenznummer für zugehörige Rechnung"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "Sendung wurde bereits versandt"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "Sendung hat keine zugewiesene Lagerartikel"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "Lagerartikel wurde nicht zugewiesen"
-#: order/models.py:1973
+#: order/models.py:2006
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:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen"
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein"
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "Auftrag gehört nicht zu Sendung"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "Sendung gehört nicht zu Auftrag"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Position"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Sendungsnummer-Referenz"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Position"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Lagerartikel für Zuordnung auswählen"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Anzahl für Bestandszuordnung eingeben"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr "Rücksendungsreferenz"
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr "Firma von der die Artikel zurückgeschickt werden"
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr "Status der Rücksendung"
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr "Nur serialisierte Artikel können einer Rücksendung zugeordnet werden"
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr "Artikel zur Rücksendung auswählen"
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr "Empfangsdatum"
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr "Das Datum des Empfangs dieses Rücksendeartikels"
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr "Ergebnis"
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr "Ergebnis für dieses Zeilenelement"
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr "Kosten für die Rückgabe oder Reparatur dieses Objektes"
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr "Abgeschlossene Positionen"
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr "Lieferant"
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "Bestellung kann nicht verworfen werden"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen"
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr "Auftrag hat unvollständige Positionen"
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "Der Auftrag ist nicht offen"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr "Automatische Preisgestaltung"
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr "Kaufpreis automatisch basierend auf Lieferantenbestandsdaten berechnen"
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Kaufpreiswährung"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr "Elemente zusammenfügen"
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr "Zusammenführen von Elementen mit dem gleichen Teil, Ziel- und Zieldatum zu einem Zeilenelement"
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Interne Teilenummer"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "Zuliefererteil muss ausgewählt werden"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "Bestellung muss angegeben sein"
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr "Lieferant muss mit der Bestellung übereinstimmen"
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Position"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "Position stimmt nicht mit Kaufauftrag überein"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Zielort für empfangene Teile auswählen"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr "Losnummer für eingehende Lagerartikel"
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Seriennummern für eingehende Lagerartikel"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Barcode"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr "Gescannter Barcode"
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Barcode ist bereits in Verwendung"
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr "Ganzzahl für verfolgbare Teile erforderlich"
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Positionen müssen angegeben werden"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "Ziel-Lagerort muss angegeben werden"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "Barcode muss eindeutig sein"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Verkaufspreis-Währung"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr "Keine Sendungsdetails angegeben"
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr "Position ist nicht diesem Auftrag zugeordnet"
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr "Anzahl muss positiv sein"
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Seriennummern zum Zuweisen eingeben"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr "Sendung wurde bereits versandt"
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr "Sendung ist nicht diesem Auftrag zugeordnet"
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr "Folgende Serienummern konnten nicht gefunden werden"
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
-msgstr "Folgende Seriennummern sind bereits zugewiesen"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr "Artikel der Bestellzeile zurücksenden"
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr "Artikel entspricht nicht der Rücksendeschrift"
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr "Artikel wurde bereits erhalten"
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr "Artikel können nur bei laufenden Bestellungen empfangen werden"
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr "Verkaufspreis-Währung"
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Verloren"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Zurückgegeben"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "In Bearbeitung"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Zurück"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Reparatur"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Ersetzen"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Rückerstattung"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Ablehnen"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr "Überfällige Bestellung"
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr "Bestellung {po} ist jetzt überfällig"
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr "Überfälliger Auftrag"
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr "Auftrag {so} ist jetzt überfällig"
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
msgid "Print purchase order report"
msgstr "Bestellbericht drucken"
-#: order/templates/order/order_base.html:53
-#: order/templates/order/return_order_base.html:62
-#: order/templates/order/sales_order_base.html:62
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr "Exportiere Bestellung in Datei"
-#: order/templates/order/order_base.html:59
-#: order/templates/order/return_order_base.html:72
-#: order/templates/order/sales_order_base.html:71
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr "Bestell-Aktionen"
-#: order/templates/order/order_base.html:64
-#: order/templates/order/return_order_base.html:76
-#: order/templates/order/sales_order_base.html:75
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Auftrag bearbeiten"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr "Bestellung duplizieren"
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Bestellung stornieren"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr "Bestellung aufgeben"
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Bestellung als vollständig markieren"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Auftrag fertigstellen"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr "Vorschaubild des Lieferanten"
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Bestellungsbeschreibung"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr "Keine Lieferanteninformationen verfügbar"
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr "Abgeschlossene Positionen"
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Unvollständig"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr "Aufgegeben"
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Gesamtsumme"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "Gesamtkosten konnten nicht berechnet werden"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr "Bestellung QR-Code"
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr "Barcode mit Bestellung verknüpfen"
@@ -6184,12 +6392,12 @@ msgstr "Auswahl duplizieren"
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Empfangene Teile"
msgid "Order Notes"
msgstr "Notizen zur Bestellung"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr "Kundenlogo Miniaturansicht"
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr "Rücksendebericht drucken"
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr "Paketliste drucken"
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Kundenreferenz"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr "Gesamtkosten"
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr "QR-Code Bestellung zurückgeben"
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr "Barcode mit Rücksendung verknüpfen"
@@ -6323,40 +6531,40 @@ msgstr "Barcode mit Rücksendung verknüpfen"
msgid "Order Details"
msgstr "Bestelldetails"
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr "Auftragsbericht drucken"
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr "Versandartikel"
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr "Als verschickt markieren"
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr "Auftrag abschließen"
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr "Dieser Auftrag ist nicht vollständig zugeordnet"
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr "Auftrag QR-Code"
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr "Barcode mit Verkaufsauftrag verknüpfen"
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr "Ausstehende Sendungen"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Aktionen"
@@ -6383,39 +6591,40 @@ msgstr "Neue Sendung"
msgid "Match Supplier Parts"
msgstr "Zuliefererteile zuordnen"
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr "Auftrag nicht gefunden"
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Preis nicht gefunden"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "Stückpreis für {part} auf {price} aktualisiert"
-#: order/views.py:421
+#: order/views.py:422
#, 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:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr "IPN (Interne Produktnummer)"
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr "Version"
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Schlüsselwörter"
@@ -6427,7 +6636,7 @@ msgstr "Artikelbild"
msgid "Category ID"
msgstr "Kategorie-ID"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "Kategoriename"
@@ -6440,11 +6649,11 @@ msgstr "Standard-Standortnummer"
msgid "Default Supplier ID"
msgstr "Standard-Lieferantennummer"
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr "Variante von"
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr "Minimaler Bestand"
@@ -6452,23 +6661,23 @@ msgstr "Minimaler Bestand"
msgid "Used In"
msgstr "Benutzt in"
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr "Im Bau"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr "Minimale Kosten"
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr "Maximale Kosten"
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr "Eltern ID"
@@ -6481,8 +6690,8 @@ msgstr "Name des übergeordneten Teils"
msgid "Category Path"
msgstr "Pfad zur Kategorie"
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr "Übergeordnete IPN"
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr "Niedrigster Preis"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr "Höchster Preis"
@@ -6545,94 +6754,98 @@ msgstr "Oberste Ebene"
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr "Mehrstufig"
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr "Unterkategorien in gefilterte Ergebnisse einbeziehen"
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr "Übergeordnetes"
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr "Nach übergeordneter Kategorie filtern"
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr "Baum ausschließen"
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr "Unterkategorien in der angegebenen Kategorie ausschließen"
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr "Ergebnisse"
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr "Eingehende Bestellung"
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr "Ausgehender Auftrag"
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr "Lagerartikel produziert von Bauauftrag"
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr "Lagerartikel für Bauauftrag benötigt"
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr "Gesamte Stückliste validieren"
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr "Diese Option muss ausgewählt werden"
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Kategorie"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr "Verwendet"
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Standard-Lagerort"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Gesamtbestand"
@@ -6641,789 +6854,789 @@ msgstr "Gesamtbestand"
msgid "Input quantity for price calculation"
msgstr "Menge für die Preisberechnung"
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Teil-Kategorie"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Teil-Kategorien"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Standard-Lagerort für Teile dieser Kategorie"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr "Strukturell"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "Teile können nicht direkt einer strukturellen Kategorie zugeordnet werden, können aber untergeordneten Kategorien zugeordnet werden."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Standard Stichwörter"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr "Standard-Stichworte für Teile dieser Kategorie"
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr "Symbol"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr "Symbol (optional)"
-#: part/models.py:178
+#: part/models.py:180
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:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr "Dieses Teil kann nicht gelöscht werden, da es noch aktiv ist"
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr "Dieses Teil kann nicht gelöscht werden, da es in einem Bauauftrag verwendet wird"
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr "Ungültige Auswahl für übergeordnetes Teil"
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr "Teil '{self}' kann in der Stückliste nicht für '{parent}' (rekursiv) verwendet werden"
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr "Teil '{parent}' wird in der Stückliste für '{self}' (rekursiv) verwendet"
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr "IPN muss mit Regex-Muster {pattern} übereinstimmen"
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr "Ein Lagerartikel mit dieser Seriennummer existiert bereits"
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr "Doppelte IPN in den Teil-Einstellungen nicht erlaubt"
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits."
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!"
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Name des Teils"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr "Ist eine Vorlage"
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr "Ist dieses Teil eine Vorlage?"
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr "Artikelbeschreibung (optional)"
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Teile-Kategorie"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr "Revisions- oder Versionsnummer"
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr "Standard Zulieferer"
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr "Standard Zuliefererteil"
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr "Standard Ablaufzeit"
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr "Ablauf-Zeit (in Tagen) für Bestand dieses Teils"
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr "Minimal zulässiger Bestand"
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr "Maßeinheit für diesen Teil"
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr "Kann dieses Teil zum Bauauftrag von anderen genutzt werden?"
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr "Kann dieses Teil an Kunden verkauft werden?"
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr "Ist dieses Teil aktiv?"
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
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:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr "Prüfsumme der Stückliste gespeichert"
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr "Stückliste kontrolliert von"
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr "BOM Kontrolldatum"
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr "Erstellungs-Nutzer"
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr "Verantwortlicher Besitzer für dieses Teil"
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr "Letzte Inventur"
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr "Mehrere verkaufen"
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr "Währung für die Berechnung der Preise im Cache"
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr "Minimale Stücklisten Kosten"
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr "Minimale Kosten für Teile"
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr "Maximale Stücklisten Kosten"
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr "Maximale Kosten für Teile"
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr "Minimale Einkaufskosten"
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr "Minimale historische Kaufkosten"
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr "Maximale Einkaufskosten"
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr "Maximale historische Einkaufskosten"
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr "Minimaler interner Preis"
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr "Minimale Kosten basierend auf den internen Staffelpreisen"
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr "Maximaler interner Preis"
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr "Maximale Kosten basierend auf internen Preisstaffeln"
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr "Minimaler Lieferantenpreis"
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr "Mindestpreis für Teil von externen Lieferanten"
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr "Maximaler Lieferantenpreis"
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr "Maximaler Preis für Teil von externen Lieferanten"
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr "Minimale Variantenkosten"
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr "Berechnete minimale Kosten für Variantenteile"
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr "Maximale Variantenkosten"
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr "Berechnete maximale Kosten für Variantenteile"
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr "Mindestkosten überschreiben"
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr "Maximale Kosten überschreiben"
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr "Berechnete Mindestkosten"
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr "Berechnete Maximalkosten"
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr "Mindestverkaufspreis"
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr "Mindestverkaufspreis basierend auf Staffelpreisen"
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr "Maximaler Verkaufspreis"
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr "Maximalverkaufspreis basierend auf Staffelpreisen"
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr "Mindestverkaufskosten"
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr "Minimaler historischer Verkaufspreis"
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr "Maximale Verkaufskosten"
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr "Maximaler historischer Verkaufspreis"
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr "Teil für die Inventur"
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr "Stückzahl"
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr "Anzahl einzelner Bestandseinträge zum Zeitpunkt der Inventur"
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur"
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Datum"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr "Datum der Inventur"
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "Zusätzliche Notizen"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr "Benutzer, der diese Inventur durchgeführt hat"
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr "Mindestbestandswert"
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr "Geschätzter Mindestwert des vorhandenen Bestands"
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr "Maximaler Bestandswert"
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr "Geschätzter Maximalwert des vorhandenen Bestands"
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr "Bericht"
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr "Inventur-Berichtsdatei (intern generiert)"
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr "Anzahl der Teile"
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden"
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr "Benutzer, der diesen Inventurbericht angefordert hat"
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr "Ungültiger Vorlagenname - es muss mindestens ein alphanumerisches Zeichen enthalten sein"
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr "Auswahl muss einzigartig sein"
-#: part/models.py:3575
-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:3626
+msgid "Test templates can only be created for testable parts"
+msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr "Testvorlage mit demselben Schlüssel existiert bereits für Teil"
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr "Test-Name"
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr "Namen für diesen Test eingeben"
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr "Testschlüssel"
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr "Vereinfachter Schlüssel zum Test"
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr "Test-Beschreibung"
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr "Beschreibung für diesen Test eingeben"
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Aktiviert"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr "Ist dieser Test aktiviert?"
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr "Benötigt"
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr "Muss dieser Test erfolgreich sein?"
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr "Erfordert Wert"
-#: part/models.py:3635
+#: part/models.py:3686
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:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr "Anhang muss eingegeben werden"
-#: part/models.py:3642
+#: part/models.py:3693
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:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr "Auswahlmöglichkeiten"
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr "Gültige Optionen für diesen Test (durch Komma getrennt)"
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr "Checkbox-Parameter können keine Einheiten haben"
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr "Checkbox-Parameter können keine Auswahl haben"
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr "Name des Parameters"
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr "Physikalische Einheiten für diesen Parameter"
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr "Parameter-Beschreibung"
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr "Checkbox"
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr "Ist dieser Parameter eine Checkbox?"
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)"
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr "Ungültige Auswahl für Parameterwert"
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr "Ausgangsteil"
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Parameter Vorlage"
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr "Parameter Wert"
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Standard-Wert"
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr "Standard Parameter Wert"
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr "Teilnummer oder Teilname"
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr "Eindeutige Teil-ID"
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr "IPN-Wert des Teils"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr "Stufe"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr "Stücklistenebene"
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr "Ausgangsteil auswählen"
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr "Untergeordnetes Teil"
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen"
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr "Diese Stücklisten-Position ist optional"
-#: part/models.py:4266
+#: part/models.py:4323
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:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Überschuss"
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr "Referenz der Postion auf der Stückliste"
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr "Notizen zur Stücklisten-Position"
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr "Prüfsumme"
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste"
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr "überprüft"
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr "Diese Stücklistenposition wurde validiert"
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr "Wird vererbt"
-#: part/models.py:4308
+#: part/models.py:4365
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:4314
+#: part/models.py:4371
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:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr "Menge muss eine Ganzzahl sein"
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr "Zuliefererteil muss festgelegt sein"
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr "Stücklisten Ersatzteile"
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein"
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr "Übergeordnete Stücklisten Position"
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr "Ersatzteil"
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr "Teil 1"
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr "Teil 2"
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr "verknüpftes Teil auswählen"
-#: part/models.py:4637
+#: part/models.py:4699
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:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr "Doppelte Beziehung existiert bereits"
@@ -7449,340 +7662,352 @@ msgstr "Ergebnisse"
msgid "Number of results recorded against this template"
msgstr "Anzahl der Ergebnisse, die in dieser Vorlage aufgezeichnet wurden"
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr "Kaufwährung dieses Lagerartikels"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr "Anzahl der Teile, die diese Vorlage verwenden"
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr "Keine Teile ausgewählt"
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr "Kategorie auswählen"
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr "Originalteil"
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr "Originalteil zum Duplizieren auswählen"
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Bild kopieren"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr "Bild vom Originalteil kopieren"
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr "Stückliste kopieren"
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr "Stückliste vom Originalteil kopieren"
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Parameter kopieren"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr "Parameterdaten vom Originalteil kopieren"
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr "Anmerkungen kopieren"
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr "Notizen aus Originalteil kopieren"
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr "Start-Bestandsmenge"
-#: part/serializers.py:514
+#: part/serializers.py:558
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:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr "Initialer Lagerort"
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr "Lagerstandort für dieses Teil angeben"
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr "Lieferant auswählen (oder leer lassen, um zu überspringen)"
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Hersteller auswählen (oder leer lassen, um zu überspringen)"
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr "Hersteller-Teilenummer"
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr "Ausgewählte Firma ist kein gültiger Lieferant"
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr "Ausgewählte Firma ist kein gültiger Hersteller"
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr "Herstellerteil mit dieser MPN existiert bereits"
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr "Lieferantenteil mit dieser SKU existiert bereits"
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr "Nicht zugewiesenes Lager"
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr "Alternatives Lager"
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr "Teil duplizieren"
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr "Initiale Daten von anderem Teil kopieren"
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr "Initialer Lagerbestand"
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr "Erstelle Teil mit Ausgangsbestand"
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr "Lieferanteninformationen"
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr "Lieferanteninformationen zu diesem Teil hinzufügen"
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr "Kategorieparameter kopieren"
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren"
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr "Vorhandenes Bild"
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr "Dateiname eines vorhandenen Teilbildes"
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr "Bilddatei existiert nicht"
-#: part/serializers.py:1194
+#: part/serializers.py:1247
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:1204
+#: part/serializers.py:1257
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:1214
+#: part/serializers.py:1267
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:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr "Externen Bestand ausschließen"
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr "Lagerartikel an externen Orten ausschließen"
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr "Bericht generieren"
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten"
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr "Teile aktualisieren"
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren"
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr "Inventur-Funktionalität ist nicht aktiviert"
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr "Berechneten Wert für Mindestpreis überschreiben"
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr "Mindestpreis Währung"
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr "Berechneten Wert für maximalen Preis überschreiben"
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr "Maximalpreis Währung"
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr "Aktualisieren"
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr "Preis für dieses Teil aktualisieren"
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Konnte nicht von den angegebenen Währungen in {default_currency} umrechnen"
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr "Mindestpreis darf nicht größer als der Maximalpreis sein"
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr "Der Maximalpreis darf nicht kleiner als der Mindestpreis sein"
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr "Herstellbar"
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr "Teil auswählen, von dem Stückliste kopiert wird"
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr "Bestehende Daten entfernen"
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen"
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr "Vererbtes einschließen"
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden"
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr "Ungültige Zeilen überspringen"
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen"
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr "Ersatzteile kopieren"
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren"
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr "Bestehende Stückliste löschen"
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen"
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr "Keine Teilspalte angegeben"
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr "Mehrere übereinstimmende Teile gefunden"
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr "Keine passenden Teile gefunden"
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr "Teil ist nicht als Komponente angelegt"
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr "Menge nicht angegeben"
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr "Ungültige Menge"
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr "Mindestens eine Stückliste-Position ist erforderlich"
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr "Gesamtstückzahl"
@@ -7932,9 +8157,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:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr "Inventur"
@@ -8093,142 +8318,146 @@ msgstr "Dateiformat auswählen"
msgid "Part List"
msgstr "Teileliste"
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr "Sie haben Benachrichtigungen für dieses Teil abonniert"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "Benachrichtigungen für dieses Teil abonnieren"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Label drucken"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr "Kosteninformationen ansehen"
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr "Bestands-Aktionen"
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr "Bestand zählen"
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr "Teilbestand verschieben"
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr "Teile Aktionen"
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr "Teil duplizieren"
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Teil bearbeiten"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr "Teil löschen"
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
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:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr "Teil kann aus anderen Teilen angefertigt werden"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr "Teil kann in Baugruppen benutzt werden"
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr "Teil wird per Seriennummer verfolgt"
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr "Teil kann von externen Zulieferern gekauft werden"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr "Teil kann an Kunden verkauft werden"
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr "Teil ist nicht aktiv"
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr "Teil ist virtuell (kein physisches Teil)"
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr "Teildetails anzeigen"
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr "Zu Bauaufträgen zugeordnet"
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr "Zur Bestellung zugeordnet"
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr "Minimaler Bestand"
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr "Preisspanne"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr "letzte Seriennummer"
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "Nach Seriennummer suchen"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr "QR-Code Teil"
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr "Barcode mit Teil verknüpfen"
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr "Berechnen"
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr "Verknüpftes Bild von diesem Teil entfernen"
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr "Keine passenden Bilder gefunden"
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr "Teildetails ausblenden"
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr "Varianten"
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Bestand"
@@ -8324,17 +8553,17 @@ msgstr "Artikelpreise überschreiben"
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Bearbeiten"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr "Zuletzt aktualisiert"
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr "Preise aktualisieren"
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr "Teilbild nicht gefunden"
msgid "Part Pricing"
msgstr "Teilbepreisung"
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr "Das Plugin kann nicht gelöscht werden, da es derzeit aktiv ist"
@@ -8498,78 +8727,85 @@ msgstr "Keine Aktion angegeben"
msgid "No matching action found"
msgstr "Keine passende Aktion gefunden"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Keine Treffer für Barcode"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Treffer für Barcode gefunden"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr "Barcode entspricht einem bereits vorhandenen Artikel"
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr "Keine passenden Teiledaten gefunden"
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr "Keine passenden Zulieferteile gefunden"
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr "Mehrere passende Zulieferteile gefunden"
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr "Zulieferteil zugeordnet"
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr "Artikel wurde bereits erhalten"
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr "Keine Übereinstimmung für Zulieferbarcode"
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr "Mehrere passende Elemente gefunden"
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr "Kein passendes Element gefunden"
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr "Barcode stimmt nicht mit einem vorhandenen Lagerartikel überein"
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr "Lagerartikel stimmt nicht mit dem Element überein"
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr "Unzureichender Bestand verfügbar"
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr "Lagerartikel der Bestellung zugeordnet"
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr "Nicht genügend Informationen"
@@ -8591,75 +8827,75 @@ msgstr "Keine passende Bestellung für '{order}'"
msgid "Purchase order does not match supplier"
msgstr "Bestellung entspricht nicht dem Lieferanten"
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr "Ausstehender Artikel für Lieferantenteil konnte nicht gefunden werden"
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr "Weitere Informationen zum Empfang des Zeilenelements erforderlich"
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr "Erhaltene Bestellartikel"
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr "Gescannte Barcode Daten"
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr "Ordne Artikel Bestellung zu"
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr "Bestellung ist nicht ausstehend"
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr "Ordne erhaltene Artikel Bestellung zu"
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr "Bestellung wurde nicht aufgegeben"
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr "Ort für den Empfang von Artikeln"
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr "Kann keinen strukturellen Standort auswählen"
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr "Kundenauftrag zum Zuordnen von Artikeln zu"
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr "Bestellung ist nicht ausstehend"
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr "Artikel der Verkaufsbestellung zuweisen"
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr "Sendung des Verkaufsauftrags zur Zuweisung von Artikeln gegen"
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr "Sendung wurde bereits geliefert"
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr "Zugewiesene Menge"
@@ -8679,6 +8915,42 @@ msgstr "Fehler beim Rendern des Etikett als HTML"
msgid "No items provided to print"
msgstr "Keine Elemente zum Drucken übergeben"
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr "InvenTree Barcodes"
@@ -8756,7 +9028,7 @@ 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:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr "Link öffnen"
@@ -8794,11 +9066,11 @@ msgstr "InvenTree Maschinen-Etikettendrucker"
msgid "Provides support for printing using a machine"
msgstr "Unterstützt das Drucken mit einer Maschine"
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr "Zuletzt benutzt"
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr "Optionen"
@@ -8822,7 +9094,7 @@ msgstr "Rand"
msgid "Print a border around each label"
msgstr "Einen Rahmen um jedes Label drucken"
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr "Querformat"
@@ -8894,19 +9166,19 @@ msgstr "Unterstützt das Scannen von TME-Barcodes"
msgid "The Supplier which acts as 'TME'"
msgstr "Der Lieferant, der als 'TME' fungiert"
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr "Nur Mitarbeiter können Plugins verwalten"
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr "Plugin-Installation ist deaktiviert"
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr "Plugin wurde erfolgreich installiert"
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr "Plugin installiert in {path}"
@@ -8943,10 +9215,6 @@ msgstr "Plugin-Konfiguration"
msgid "Plugin Configurations"
msgstr "Plugin-Konfigurationen"
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr "Schlüssel"
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr "Schlüssel des Plugins"
@@ -8955,7 +9223,7 @@ msgstr "Schlüssel des Plugins"
msgid "PluginName of the plugin"
msgstr "Name des Plugins"
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr "Paket-Name"
@@ -8984,17 +9252,17 @@ msgstr "Integriertes Plugin"
msgid "Package Plugin"
msgstr "Paket-Plugin"
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr "Plugin"
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr "Methode"
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr "Kein Autor gefunden"
@@ -9053,81 +9321,157 @@ msgstr "Beispiel-Währungswechsel-Plugin"
msgid "InvenTree Contributors"
msgstr "InvenTree Mitwirkende"
-#: plugin/serializers.py:81
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr ""
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
msgid "Source URL"
msgstr "Quell-URL"
-#: plugin/serializers.py:83
+#: plugin/serializers.py:108
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:92
+#: plugin/serializers.py:117
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:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr "Version"
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr "Versionsangabe für das Plugin. Leer lassen für die neueste Version."
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr "Plugin-Installation bestätigen"
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
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:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr "Installation nicht bestätigt"
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr "Entweder Paketname oder URL muss angegeben werden"
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr "Komplett neu laden"
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr "Führe ein vollständiges Nachladen der Plugin-Registrierung durch"
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr "Neuladen erzwingen"
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr "Erzwinge ein erneutes Laden der Plugin-Registrierung, auch wenn sie bereits geladen ist"
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr "Plugins sammeln"
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr "Plugins sammeln und zur Registrierung hinzufügen"
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr "Plugin aktivieren"
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr "Dieses Plugin aktivieren"
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr "Konfiguration löschen"
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr "Plugin-Konfiguration aus der Datenbank löschen"
@@ -9135,11 +9479,11 @@ msgstr "Plugin-Konfiguration aus der Datenbank löschen"
msgid "No valid objects provided to template"
msgstr "Keine korrekten Objekte für Vorlage gegeben"
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr "Teile"
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr "Fehler beim Drucken des Labels"
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr "Vorlagendatei '{template}' fehlt oder existiert nicht"
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Dateinamen-Muster"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Filter"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr "Seitengröße für PDF-Berichte"
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr "Bericht in Querformat anzeigen"
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Breite [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Label-Breite in mm"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Höhe [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Label-Höhe in mm"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr "Fortschritt"
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr "Ausgabedatei"
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr "Schnipsel"
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr "Berichts-Snippet"
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr "Snippet-Beschreibung"
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr "Ressource"
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr "Berichts-Ressource"
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr "Ressource-Beschreibung"
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr "Etiketten-Vorlage auswählen"
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr "Lieferant gelöscht"
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr "Stück-Preis"
@@ -9379,13 +9735,18 @@ msgstr "Zusätzliche Positionen"
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr "Summe"
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr "Zuweisungen"
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr "Lagerstandorte"
@@ -9403,15 +9764,13 @@ msgstr "Testergebnisse"
msgid "Test"
msgstr "Test"
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr "Ergebnis"
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr "bestanden"
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr "fehlgeschlagen"
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr "Kein Ergebnis (erforderlich)"
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr "Kein Ergebnis"
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr "Verbaute Objekte"
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr "Seriennummer"
@@ -9450,67 +9810,67 @@ msgstr "part_image tag benötigt eine Bauteilinstanz"
msgid "company_image tag requires a Company instance"
msgstr "company_image tag erfordert eine Firmeninstanz"
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr "Standort-ID"
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr "Lagerortpfad"
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr "Lagerartikel ID"
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr "Statuscode"
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr "Zuliefererteil-ID"
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr "Zulieferer ID"
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr "Kunden ID"
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr "verbaut in"
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr "Bauauftrag-ID"
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr "Auftrags-ID"
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr "Bestellungs-ID"
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr "Überprüfung erforderlich"
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr "Löschen wenn leer"
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr "Ablaufdatum"
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr "Unterorte in gefilterte Ergebnisse einbeziehen"
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr "Übergeordneter Ort"
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr "Filtern nach übergeordnetem Ort"
@@ -9550,8 +9910,8 @@ msgstr "Gültigkeitsdauer vor"
msgid "Expiry date after"
msgstr "Gültigkeitsdauer nach"
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr "überfällig"
@@ -9560,594 +9920,598 @@ msgstr "überfällig"
msgid "Quantity is required"
msgstr "Menge ist erforderlich"
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr "Gültiges Teil muss angegeben werden"
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr "Der angegebene Lieferantenartikel existiert nicht"
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "Das Zulieferteil hat eine Packungsgröße definiert, aber das Kennzeichen use_pack_size ist nicht gesetzt"
-#: stock/api.py:1005
+#: stock/api.py:996
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:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr "Lagerstandort Typ"
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr "Lagerstandorte Typen"
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr "Standardsymbol für alle Orte, die kein Icon gesetzt haben (optional)"
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Bestand-Lagerort"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Bestand-Lagerorte"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr "Besitzer"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr "Besitzer auswählen"
-#: stock/models.py:189
+#: stock/models.py:195
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:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr "Extern"
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr "Dies ist ein externer Lagerort"
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr "Standorttyp"
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr "Standortart dieses Standortes"
-#: stock/models.py:279
+#: stock/models.py:285
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:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!"
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden"
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr "Artikeltyp ('{self.supplier_part.part}') muss {self.part} sein"
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr "Anzahl muss für Objekte mit Seriennummer 1 sein"
-#: stock/models.py:721
+#: stock/models.py:798
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:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr "Teil kann nicht zu sich selbst gehören"
-#: stock/models.py:748
+#: stock/models.py:825
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:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr "Referenz verweist nicht auf das gleiche Teil"
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr "Eltern-Lagerartikel"
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr "Basis-Teil"
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen"
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr "Wo wird dieses Teil normalerweise gelagert?"
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr "Verpackung, in der dieser Lagerartikel gelagert ist"
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr "Ist dieses Teil in einem anderen verbaut?"
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr "Seriennummer für dieses Teil"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr "Losnummer für diesen Lagerartikel"
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr "Bestand"
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr "Quellbau"
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr "Bauauftrag für diesen Lagerartikel"
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr "Verbraucht von"
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr "Bauauftrag der diesen Lagerartikel verbrauchte"
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr "Quelle Bestellung"
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr "Bestellung für diesen Lagerartikel"
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr "Ziel-Auftrag"
-#: stock/models.py:921
+#: stock/models.py:998
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:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr "Löschen wenn leer"
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr "Diesen Lagerartikel löschen wenn der Bestand aufgebraucht ist"
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr "Preis für eine Einheit bei Einkauf"
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr "In Teil umgewandelt"
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr "Teil ist nicht verfolgbar"
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr "Anzahl muss eine Ganzzahl sein"
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr "Menge darf die verfügbare Lagermenge ({self.quantity}) nicht überschreiten"
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
-msgstr "Seriennummern muss eine Liste von Ganzzahlen sein"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr "Anzahl stimmt nicht mit den Seriennummern überein"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "Seriennummern existieren bereits"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr "Testvorlage existiert nicht"
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr "Artikel wurde einem Kundenauftrag zugewiesen"
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr "Lagerartikel ist in anderem Element verbaut"
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr "Lagerartikel enthält andere Artikel"
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr "Artikel wurde einem Kunden zugewiesen"
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr "Lagerartikel wird aktuell produziert"
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden"
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr "Artikel duplizeren"
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr "Lagerartikel müssen auf dasselbe Teil verweisen"
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr "Lagerartikel müssen auf dasselbe Lieferantenteil verweisen"
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr "Status-Codes müssen zusammenpassen"
-#: stock/models.py:1960
+#: stock/models.py:2066
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:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr "Eintrags-Notizen"
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr "Wert muss für diesen Test angegeben werden"
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr "Anhang muss für diesen Test hochgeladen werden"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr "Testergebnis"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr "Test Ausgabe Wert"
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr "Test Ergebnis Anhang"
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr "Test Notizen"
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr "Teststation"
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr "Der Bezeichner der Teststation, in der der Test durchgeführt wurde"
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr "Gestartet"
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr "Der Zeitstempel des Teststarts"
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr "Fertiggestellt"
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr "Der Zeitstempel der Test-Beendigung"
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr "Testvorlage für dieses Ergebnis"
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr "Vorlagen-ID oder Testname muss angegeben werden"
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr "Die Test-Endzeit kann nicht früher als die Startzeit des Tests sein"
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr "Seriennummer ist zu lang"
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr "Elternposition"
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr "Packungsgröße beim Hinzufügen verwenden: Die definierte Menge ist die Anzahl der Pakete"
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr "abgelaufen"
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr "Untergeordnete Objekte"
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit"
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben"
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, 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:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr "Seriennummern für neue Teile eingeben"
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr "Ziel-Bestand"
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr "Optionales Notizfeld"
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr "Seriennummern können diesem Teil nicht zugewiesen werden"
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "Seriennummern existieren bereits"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr "Lagerartikel für Installation auswählen"
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr "Zu installierende Menge"
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr "Anzahl der zu verwendenden Artikel eingeben"
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr " Transaktionsnotizen hinzufügen (optional)"
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr "Die zu verwendende Menge muss mindestens 1 sein"
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr "Lagerartikel ist nicht verfügbar"
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr "Ausgewähltes Teil ist nicht in der Stückliste"
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr "Die zu verwendende Menge darf die verfügbare Menge nicht überschreiten"
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr "Ziel Lagerort für unverbautes Objekt"
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
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:930
+#: stock/serializers.py:961
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:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr "Lagerartikel konnte nicht mit Zulieferteil zugewiesen werden"
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr "Ziel Lagerort für zurückgegebene Artikel"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr "Lagerartikel auswählen, um den Status zu ändern"
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr "Keine Lagerartikel ausgewählt"
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Unter-Lagerorte"
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr "Übergeordneter Lagerort"
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr "Teil muss verkaufbar sein"
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr "Artikel ist einem Kundenauftrag zugeordnet"
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr "Artikel ist einem Fertigungsauftrag zugeordnet"
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr "Kunde zum Zuweisen von Lagerartikel"
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr "Ausgewählte Firma ist kein Kunde"
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr "Notizen zur Lagerzuordnung"
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr "Eine Liste der Lagerbestände muss angegeben werden"
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr "Notizen zur Lagerartikelzusammenführung"
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr "Unterschiedliche Lieferanten erlauben"
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben"
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr "Unterschiedliche Status erlauben"
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben"
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr "Mindestens zwei Lagerartikel müssen angegeben werden"
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr "Keine Änderung"
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr "Primärschlüssel Lagerelement"
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr "Lagerartikel Status-Code"
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr "Bestandsbewegungsnotizen"
@@ -10175,107 +10539,107 @@ msgstr "Zurückgewiesen"
msgid "Quarantined"
msgstr "In Quarantäne"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Alter Bestand-Verfolgungs-Eintrag"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Lagerartikel erstellt"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Lagerartikel bearbeitet"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Seriennummer hinzugefügt"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Bestand gezählt"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Bestand manuell hinzugefügt"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Bestand manuell entfernt"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Standort geändert"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Lagerbestand aktualisiert"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "In Baugruppe installiert"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Aus Baugruppe entfernt"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Komponente installiert"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Komponente entfernt"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Vom übergeordneten Element geteilt"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Unterobjekt geteilt"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Lagerartikel zusammengeführt"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "In Variante umgewandelt"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Endprodukt erstellt"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Endprodukt fertiggestellt"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Endprodukt abgelehnt"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Durch Bauauftrag verbraucht"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Versandt gegen Verkaufsauftrag"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Gegen Bestellung empfangen"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Zurückgeschickt gegen Rücksendeauftrag"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Zum Kunden geschickt"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Rücksendung vom Kunden"
@@ -10296,7 +10660,7 @@ msgstr "Dieser Lagerartikel hat keine Kinder"
msgid "Test Data"
msgstr "Testdaten"
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr "Test-Bericht"
@@ -10316,7 +10680,7 @@ msgstr "Lagerartikel-Notizen"
msgid "Installed Stock Items"
msgstr "Installierte Lagerartikel"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr "Lagerartikel installieren"
@@ -10328,208 +10692,212 @@ msgstr "Alle Testergebnisse für diesen Lagerartikel löschen"
msgid "Add Test Result"
msgstr "Testergebnis hinzufügen"
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr "Lagerbestand lokalisieren"
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr "zu Lagerort einscannen"
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr "Druck Aktionen"
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr "Bestands-Anpassungs Aktionen"
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr "Bestand zählen"
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr "Bestand hinzufügen"
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr "Bestand entfernen"
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr "Bestand serialisieren"
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr "Bestand verschieben"
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr "Kunden zuweisen"
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr "zu Bestand zurückgeben"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr "Lagerartikel deinstallieren"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr "Deinstallieren"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr "Lagerartikel installieren"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr "Installieren"
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr "in Variante ändern"
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr "Lagerartikel duplizieren"
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr "Lagerartikel bearbeiten"
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr "Lagerartikel löschen"
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Bauauftrag"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr "Kein Hersteller ausgewählt"
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:252
-#: stock/templates/stock/location.html:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr "Nur Leserechte"
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr "Dieser Lagerartikel ist nicht verfügbar"
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
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:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr "Ändern des Lagerartikel in der Bauauftrag-Ansicht."
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr "Dieser Lagerartikel ist einem Auftrag zugewiesen"
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr "Dieser Lagerartikel ist einem Bauauftrag zugewiesen"
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
msgstr "Dieser Lagerartikel hat eine eindeutige Seriennummer, der Bestand kann nicht geändert werden"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "vorherige Seite"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr "Zur vorherigen Seriennummer wechseln"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr "nächste Seite"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr "Zur nächsten Seriennummer wechseln"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr "Kein Lagerort gesetzt"
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr "Tests"
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr "Dieser Lagerartikel hat nicht alle Tests bestanden"
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, 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:439
+#: stock/templates/stock/item_base.html:436
#, 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:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr "Keine Inventur ausgeführt"
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr "Lagerartikel"
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr "Lagerstatus bearbeiten"
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr "Lagerartikel QR-Code"
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr "Barcode mit Lagerartikel verknüpfen"
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
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:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr "Warnung"
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr "Diese Aktion kann nicht einfach rückgängig gemacht werden"
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr "Lagerartikel umwandeln"
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr "Zurück ins Lager"
@@ -10541,84 +10909,84 @@ 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:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr "Inventur für diesen Lagerort durchführen"
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr "Lagerort lokalisieren"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr "Lagerartikel per Barcode-Scan zu diesem Lagerort hinzufügen"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr "Lagerartikel einscannen"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr "Lagerort hierher einscannen"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr "Lagerort scannen"
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr "Standortbericht drucken"
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr "Lagerort-Aktionen"
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr "Lagerort bearbeiten"
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr "Lagerort löschen"
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr "Oberster Lagerstandort"
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr "Standortbesitzer"
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
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:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr "Lagerort Typ"
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr "Neuen Lagerort anlegen"
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr "Neuer Lagerort"
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr "Lagerort"
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr "Lagerbehälter an diesen Ort eingescannt"
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr "Lagerort QR-Code"
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr "Barcode mit Lagerort verknüpfen"
@@ -10630,10 +10998,6 @@ msgstr "Lade..."
msgid "Stock Tracking"
msgstr "Lagerartikel-Verfolgung"
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr "Zuweisungen"
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr "Zugriff verweigert"
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr "Bewerten"
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Löschen"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr "Keine Projektcodes gefunden"
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr "gruppieren"
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr "Standorttyp löschen"
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr "Neuer Standorttyp"
@@ -11253,7 +11617,7 @@ msgstr "Auftrags-Einstellungen"
msgid "Stock Settings"
msgstr "Bestands-Einstellungen"
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr "Lagerstandort Elemente"
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr "Nicht verifiziert"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr "Primär"
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr "Fehlerbericht senden"
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr "In die Zwischenablage kopieren"
@@ -11738,23 +12102,24 @@ msgstr "Anhang hinzufügen"
msgid "Barcode Identifier"
msgstr "Barcode-Bezeichner"
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr "Server-Neustart erforderlich"
-#: templates/base.html:106
+#: templates/base.html:105
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:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr "Bitte kontaktieren Sie Ihren Administrator für mehr Informationen"
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr "Ausstehende Datenbankmigrationen"
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr "Es gibt ausstehende Datenbankmigrationen, die Ihre Aufmerksamkeit erfordern"
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr "Bei den folgenden Teilen gibt es wenige Lagerartikel"
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr "Benötigte Menge"
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr "Klicken Sie auf den folgenden Link, um diesen Teil anzuzeigen"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr "Mindestmenge"
@@ -12039,7 +12404,7 @@ msgstr "Zeilendaten"
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr "Schliessen"
@@ -12156,7 +12521,7 @@ msgstr "Stückliste für Bauteile laden"
msgid "Substitutes Available"
msgstr "Ersatzteile verfügbar"
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr "Alternatives Lager erlaubt"
@@ -12176,30 +12541,30 @@ msgstr "Stücklistenpreise sind vollständig"
msgid "No pricing available"
msgstr "Keine Preisinformation verfügbar"
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr "Externes Lager"
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr "Kein Lagerbestand verfügbar"
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr "Alternatives Lager und Ersatzteillager einschließen"
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr "Alternatives Lager einschließen"
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr "Ersatzteillager einschließen"
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr "Verbrauchsartikel"
@@ -12231,7 +12596,7 @@ msgstr "Stückliste anzeigen"
msgid "No BOM items found"
msgstr "Keine Stücklisten-Position(en) gefunden"
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr "Benötigtes Teil"
@@ -12243,396 +12608,396 @@ msgstr "Von übergeordneter Stückliste geerbt"
msgid "Edit Build Order"
msgstr "Bauauftrag bearbeiten"
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr "Bauauftrag erstellen"
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr "Bauauftrag abbrechen"
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
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:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr "Lagerartikel wurden zu diesem Bauauftrag hinzugefügt"
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr "Es sind noch unvollständige Artikel für diesen Bauauftrag vorhanden"
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr "Bauauftrag ist bereit abgeschlossen zu werden"
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
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:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr "Bauauftrag ist unvollständig"
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr "Bauauftrag fertigstellen"
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr "Nächste verfügbare Seriennummer"
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr "Letzte Seriennummer"
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr "Die Stückliste enthält verfolgbare Teile"
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr "Endprodukte müssen individuell angelegt werden"
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr "Nachverfolgbare Teile können Seriennummern haben"
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr "Seriennummern für mehrere einzelne Endprodukte angeben"
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr "Endprodukt anlegen"
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr "Lagerartikel zu diesem Endprodukt zuweisen"
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr "Bestand von Endprodukt entfernen"
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr "Endprodukt fertigstellen"
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr "Ausschuss Endprodukt"
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr "Endprodukt entfernen"
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfernen möchten?"
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr "Lagerartikel entfernen"
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr "Endprodukte auswählen"
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr "Mindestens ein Endprodukt muss ausgewählt werden"
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr "Ausgewählte Endprodukte werden als vollständig markiert"
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr "Endprodukt"
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr "Endprodukte fertigstellen"
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr "Ausgewählte Endprodukte werden als Ausschuss markiert"
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr "Ausschuss wird als verworfen markiert"
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr "Zugewiesene Lagerbestände werden nicht mehr verfügbar sein"
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr "Der Fertigstellungsstatus des Bauauftrags wird nicht angepasst"
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr "Ausschuss Endprodukte"
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr "Ausgewählte Endprodukte werden gelöscht"
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr "Endprodukte werden dauerhaft gelöscht"
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr "Zugewiesene Lagerartikel werden in den Bestand zurückgeführt"
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr "Endprodukte entfernen"
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr "Keine Allokationen für Bauauftrag gefunden"
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr "Standort nicht angegeben"
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr "Endprodukte fertigstellen"
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr "Ausschuss"
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr "Endprodukte löschen"
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr "Endprodukt"
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr "Endprodukte"
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr "Endprodukt-Aktionen"
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr "Keine aktiven Endprodukte gefunden"
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr "Zugewiesene Positionen"
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr "Erforderliche Prüfungen"
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr "Teile auswählen"
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr "Sie müssen mindestens einen Teil für die Zuweisung auswählen"
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr "Anzahl für Bestandszuordnung eingeben"
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr "Alle Teile zugeordnet"
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet"
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
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:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr "Lagerartikel für Bauauftrag zuweisen"
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr "Keine passenden Lagerstandorte"
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr "Keine passenden Lagerartikel"
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr "Automatische Lagerzuordnung"
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
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:2117
+#: templates/js/translated/build.js:2120
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:2118
+#: templates/js/translated/build.js:2121
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:2119
+#: templates/js/translated/build.js:2122
msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found"
msgstr "Wenn ein Ersatzlager zugelassen ist, wird dieses verwendet, wenn das Primärteil nicht vorrätig ist"
-#: templates/js/translated/build.js:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr "Lagerartikel zuordnen"
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr "Keine Bauaufträge zur Suchanfrage"
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr "Auswählen"
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr "Bauauftrag ist überfällig"
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr "Keine Benutzerinformation"
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr "Bestands-Zuordnung bearbeiten"
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr "Bestands-Zuordnung löschen"
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr "Zuordnung bearbeiten"
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr "Zuordnung entfernen"
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr "Bauauftragsposition"
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr "Bauauftragspositionen"
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr "Keine Bauauftragspositionen gefunden"
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr "Nachverfolgbares Teil"
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr "Menge"
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr "Ausreichender Bestand vorhanden"
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr "Verbrauchsartikel"
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr "Verfolgtes Objekt"
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr "Zuweisung von nachverfolgbaren Artikeln zu einzelnen Bauprodukten"
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr "Bestand bauen"
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr "Bestand bestellen"
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr "Bestand zuweisen"
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr "Bestands-Zuordnung löschen"
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr "Hersteller hinzufügen"
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr "Herstellerteil hinzufügen"
@@ -12649,231 +13014,231 @@ msgstr "Herstellerteil hinzufügen"
msgid "Edit Manufacturer Part"
msgstr "Herstellerteil ändern"
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr "Zulieferer hinzufügen"
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr "Zuliefererteil hinzufügen"
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr "Alle ausgewählten Zulieferteile werden gelöscht"
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr "Zuliefererteil entfernen"
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr "Neue Firma hinzufügen"
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr "Teile geliefert"
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr "Hersteller-Teile"
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr "Keine Firmeninformation gefunden"
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr "Neuen Kontakt erstellen"
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr "Kontakt bearbeiten"
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr "Alle ausgewählten Kontakte werden gelöscht"
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr "Rolle"
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr "Kontakte löschen"
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr "Keine Kontakte gefunden"
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr "Telefonnummer"
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr "E-Mail-Adresse"
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr "Kontakt löschen"
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr "Neue Adresse erstellen"
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr "Adresse bearbeiten"
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr "Alle ausgewählten Adressen werden gelöscht"
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr "Adressen löschen"
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr "Keine Adressen gefunden"
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr "Postleitzahl"
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr "Bundesland"
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr "Kurierhinweise"
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr "Interne Hinweise"
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr "Adresse löschen"
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr "Alle ausgewählten Herstellerteile werden gelöscht"
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr "Herstellerteile löschen"
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr "Alle ausgewählten Parameter werden gelöscht"
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr "Teile bestellen"
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr "Herstellerteile löschen"
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr "Herstellerteil-Aktionen"
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr "Keine Herstellerteile gefunden"
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr "Vorlagenteil"
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr "Baugruppe"
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr "Keine Parameter gefunden"
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr "Parameter bearbeiten"
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr "Parameter bearbeiten"
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr "Parameter löschen"
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr "Zulieferteile löschen"
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr "Keine Zulieferteile gefunden"
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr "Basiseinheit"
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr "Verfügbarkeit"
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr "Zulieferteile bearbeiten"
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr "Zuliefererteil löschen"
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr "Staffelpreis löschen"
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr "Staffelpreis bearbeiten"
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr "Keine Staffelpreisinformation gefunden"
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr "Zuletzt aktualisiert"
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr "Staffelpreis bearbeiten"
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr "Staffelpreis löschen"
@@ -12977,19 +13342,19 @@ msgstr "Feldname"
msgid "Select Columns"
msgstr "Spalten auswählen"
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr "JA"
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr "NEIN"
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr "Wahr"
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr "Falsch"
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr "Position löschen"
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr "Keine Postionen gefunden"
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr "Teileparametervorlage löschen"
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr "Keine Bestellungen gefunden"
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr "Diese Position ist überfällig"
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr "Position empfangen"
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr "Keine Kategorien"
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr "Als Liste anzeigen"
@@ -13431,7 +13796,7 @@ msgstr "Als Raster anzeigen"
msgid "No subcategories found"
msgstr "Keine Unterkategorien gefunden"
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr "Als Baum anzeigen"
@@ -13483,23 +13848,23 @@ msgstr "Das angegebene Datum liegt in der Vergangenheit"
msgid "Speculative"
msgstr "Spekulativ"
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr "Keine Zeitplanung für dieses Teil vorhanden"
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr "Fehler beim Abrufen der Zeitplanungsinformationen für dieses Teil"
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr "Geplante Lagermengen"
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr "Maximale Menge"
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr "Minimaler Lagerbestand"
@@ -13575,267 +13940,243 @@ msgstr "Keine Einkaufshistorie verfügbar"
msgid "Purchase Price History"
msgstr "Kaufpreisverlauf"
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr "Keine Verkaufshistorie verfügbar"
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr "Verkaufspreisverlauf"
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr "Keine Variantendaten verfügbar"
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr "Variantenteil"
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr "Bestellung zum Duplizieren auswählen"
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr "Positionen duplizieren"
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr "Alle Positionen der ausgewählten Bestellung duplizieren"
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr "Zusätzliche Positionen duplizieren"
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr "Zusätzliche Positionen der ausgewählten Bestellung duplizieren"
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr "Bestellung bearbeiten"
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr "Duplizierungsoptionen"
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr "Bestellung abschließen"
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr "Diese Bestellung als vollständig markieren?"
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr "Alle Positionen wurden erhalten"
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr "Diese Bestellung enthält Positionen, die nicht als empfangen markiert wurden."
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr "Fertigstellen dieser Bestellung bedeutet, dass sie ihre Positionen nicht länger bearbeiten können."
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr "Bestellung stornieren"
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr "Soll die Bestellung storniert werden?"
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr "Diese Bestellung kann nicht storniert werden"
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr "Nachdem diese Bestellung platziert ist, können die Positionen nicht länger bearbeitet werden."
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr "Bestellung aufgeben"
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr "Mindestens ein kaufbares Teil muss ausgewählt werden"
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr "Zu bestellende Menge"
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr "Neues Zuliefererteil"
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr "Neue Bestellung"
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr "Zur Bestellung hinzufügen"
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr "Zusammenfügen"
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr "Keine passenden Lieferantenteile"
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr "Keine passenden Bestellungen"
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr "Positionen auswählen"
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr "Mindestens eine Position muss ausgewählt werden"
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr "Erhaltene Menge"
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr "Zu erhaltende Menge"
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr "Bestandsstatus"
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr "Barcode hinzufügen"
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr "Barcode entfernen"
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr "Lagerort angeben"
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr "Losnummer hinzufügen"
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr "Seriennummern hinzufügen"
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr "Seriennummern"
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr "Bestellnummer"
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr "Zu erhaltende Menge"
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr "Empfang der Artikel bestätigen"
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr "Bestellartikel erhalten"
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr "Artikel-Barcode scannen"
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr "Scanne den Barcode am erhaltenen Artikel (darf nicht mit einem existierenden Lagerartikel übereinstimmen)"
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr "Ungültige Barcode-Daten"
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr "Bestellung ist überfällig"
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr "Alle ausgewählten Positionen werden gelöscht"
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr "Ausgewählte Positionen löschen?"
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr "Position duplizieren"
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr "Position bearbeiten"
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr "Position löschen"
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr "Position duplizieren"
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr "Position bearbeiten"
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr "Position löschen"
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr "Kein Rücksendeauftrag gefunden"
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr "Ungültiger Kunde"
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr "Rücksendeauftragspositionen erhalten"
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr "Keine passenden Positionen gefunden"
@@ -13903,188 +14244,181 @@ msgstr "Auftrag anlegen"
msgid "Edit Sales Order"
msgstr "Auftrag bearbeiten"
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr "Dieser Sendung wurden keine Lagerartikel zugewiesen"
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr "Die folgenden Lagerartikel werden verschickt"
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr "Lieferung fertigstellen"
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr "Lieferung bestätigen"
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr "Keine ausstehenden Sendungen gefunden"
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr "Keine Lagerartikel wurden offenen Sendungen zugewiesen"
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr "Lieferung fertigstellen"
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr "Überspringen"
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr "Auftrag versenden"
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr "Bestellung versenden?"
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr "Auftrag kann nicht abgeschlossen werden, da unvollständige Sendungen vorhanden sind"
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
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:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr "Versenden dieses Auftrags bedeutet, dass der Auftrag und seine Positionen nicht mehr bearbeitbar sind."
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr "Diesen Auftrag aufgeben?"
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr "Auftrag aufgeben"
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr "Auftrag stornieren"
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr "Stornieren dieser Bestellung bedeutet, dass sie nicht länger bearbeitbar ist."
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr "Neue Lieferung erstellen"
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr "Keine Aufträge gefunden"
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr "Lieferung bearbeiten"
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr "Lieferung fertigstellen"
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr "Lieferung löschen"
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr "Lieferung bearbeiten"
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr "Lieferung löschen"
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr "Keine passende Lieferung gefunden"
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr "Sendungsreferenz"
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr "Nicht versandt"
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr "Nachverfolgen"
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr "Rechnung"
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr "Lieferung hinzufügen"
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr "Bestandszuordnung bestätigen"
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr "Lagerartikel Auftrag zuweisen"
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr "Keine Allokationen für Auftrag gefunden"
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr "Bestandszuordnung bearbeiten"
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr "Löschvorgang bestätigen"
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr "Bestandszuordnung löschen"
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr "An den Kunden versandt"
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr "Lagerort nicht angegeben"
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr "Seriennummern zuweisen"
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr "Bestand kaufen"
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr "Preis berechnen"
-
-#: templates/js/translated/sales_order.js:2071
-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:2074
-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:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr "Seriennummern zuweisen"
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr "Bestand kaufen"
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr "Preis berechnen"
+
+#: templates/js/translated/sales_order.js:2052
+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:2055
+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:2234
msgid "Update Unit Price"
msgstr "Stückpreis aktualisieren"
@@ -14209,13 +14543,10 @@ msgid "Find Serial Number"
msgstr "Seriennummer finden"
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
+#: templates/js/translated/stock.js:620
msgid "Enter serial number"
msgstr "Seriennummer eingeben"
-#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
-msgstr "Eine Seriennummer eingeben"
-
#: templates/js/translated/stock.js:640
msgid "No matching serial number"
msgstr "Keine passende Seriennummer"
@@ -14284,7 +14615,7 @@ msgstr "Entnehmen"
msgid "Add Stock"
msgstr "Bestand hinzufügen"
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr "Hinzufügen"
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr "Lagerartikel auswählen"
@@ -14320,18 +14651,6 @@ msgstr "Wähle mindestens einen verfügbaren Lagerartikel aus"
msgid "Confirm stock adjustment"
msgstr "Bestandsanpassung bestätigen"
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr "ERFOLGREICH"
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr "FEHLGESCHLAGEN"
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr "KEIN ERGEBNIS"
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr "Test bestanden"
@@ -14388,216 +14707,216 @@ msgstr "Auftrag zugewiesen"
msgid "No stock location set"
msgstr "Kein Lagerort gesetzt"
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr "Bestandsstatus ändern"
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr "Bestand zusammenführen"
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr "Bestand löschen"
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr "Lagerartikel"
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr "Zu Lagerort einscannen"
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr "Lager-Aktionen"
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr "Installierte Artikel laden"
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr "Lagerartikel wird produziert"
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr "Lagerartikel wurde Auftrag zugewiesen"
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr "Lagerartikel wurde Kunden zugewiesen"
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr "Serialisierter Lagerartikel wurde zugewiesen"
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr "Lagerartikel wurde vollständig zugewiesen"
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr "Lagerartikel wurde teilweise zugewiesen"
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr "Lagerartikel in anderem Artikel verbaut"
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr "Lagerbestand wurde durch einen Bauauftrag verbraucht"
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr "Lagerartikel ist abgelaufen"
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr "Lagerartikel läuft demnächst ab"
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr "Lagerartikel wurde zurückgewiesen"
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr "Lagerartikel ist verloren"
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr "Lagerartikel ist zerstört"
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr "Aufgebraucht"
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr "Zuliefererteil nicht angegeben"
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr "Bestandswert"
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr "Keine zur Anfrage passenden Lagerartikel gefunden"
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr "Lagerorte"
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr "Untergeordnete Lagerorte laden"
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr "Details"
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr "Keine Änderungen"
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr "Teileinformationen nicht verfügbar"
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr "Lagerort existiert nicht mehr"
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr "Bauauftrag existiert nicht mehr"
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr "Bestellung existiert nicht mehr"
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr "Auftrag existiert nicht mehr"
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr "Rücksendebestellung existiert nicht mehr"
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr "Kunde existiert nicht mehr"
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr "Lagerartikel existiert nicht mehr"
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr "Hinzugefügt"
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr "Entfernt"
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr "Keine installierten Artikel"
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr "Lagerartikel deinstallieren"
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr "Zu deinstallierende Lagerartikel auswählen"
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr "Einen anderen Lagerartikel in dieses Teil installieren"
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
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:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr "Der Lagerartikel ist mit einem Teil verknüpft das in der Stückliste für diesen Lagerartikel ist"
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr "Dieser Lagerartikel ist aktuell vorhanden"
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
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:3307
+#: templates/js/translated/stock.js:3308
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:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr "Teil zur Installation auswählen"
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr "Wählen Sie einen oder mehrere Bestandteile aus"
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr "Lagerartikel auswählen"
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr "Bestandsstatus ändern"
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr "Zeige Teile welche im Lager sind"
msgid "Show items which are in production"
msgstr "Zeige Teile welche in Produktion sind"
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr "Varianten einschließen"
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr "Lagerartikel für Teile-Varianten einschließen"
@@ -15012,10 +15327,6 @@ msgstr "Account Login fehlgeschlagen"
msgid "An error occurred while attempting to login via your social network account."
msgstr "Beim Versuch, sich über Ihr soziales Netzwerkkonto anzumelden, ist ein Fehler aufgetreten."
-#: templates/socialaccount/authentication_error.html:13
-msgid "Contact your system administrator for further information."
-msgstr "Bitte kontaktieren Sie Ihren Administrator für mehr Informationen."
-
#: templates/socialaccount/login.html:13
#, python-format
msgid "Connect %(provider)s"
@@ -15141,27 +15452,27 @@ msgstr "Ja"
msgid "No"
msgstr "Nein"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Benutzer"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr "Welche Benutzer gehören zu dieser Gruppe"
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr "Folgende Benutzer gehören zu mehreren Gruppen"
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Persöhnliche Informationen"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Berechtigungen"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr "wichtige Daten"
@@ -15205,35 +15516,35 @@ msgstr "Das letzte Mal, wo das Token verwendet wurde"
msgid "Revoked"
msgstr "Widerrufen"
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "Berechtigung geändert"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Gruppe"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Ansicht"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Berechtigung Einträge anzuzeigen"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Berechtigung Einträge zu erstellen"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Ändern"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Berechtigungen Einträge zu ändern"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Berechtigung Einträge zu löschen"
diff --git a/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po
index 4fc2989b76..7b02ba52f6 100644
--- a/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/el/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: el\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "Το API endpoint δε βρέθηκε"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Η μονάδα μέτρησης δεν είναι έγκυρη ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Δεν εισήχθη τιμή"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Δεν ήταν δυνατή η μετατροπή από {original} σε {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "Δόθηκε μη έγκυρη ποσότητα"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Μη έγκυρη ποσότητα"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Δόθηκε μη έγκυρη ποσότητα ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Μπορείτε να βρείτε λεπτομέρειες σφάλματος στον πίνακα διαχείρισης"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Εισάγετε ημερομηνία"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Σημειώσεις"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Η τιμή '{name}' δεν εμφανίζεται σε μορφή μοτίβου"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Η παρεχόμενη τιμή δεν ταιριάζει με το απαιτούμενο απαραραίητη μοτίβο: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Η παρεχόμενη κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου δεν είναι έγκυρη."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυδρομείου δεν έχει εγκριθεί."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Η εγγραφή είναι απενεργοποιημένη."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Μη έγκυρη ποσότητα"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Κενό σειριακό αριθμό συμβολοσειράς"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Διπλότυπο serial number"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Μη έγκυρο εύρος ομάδας: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Το εύρος της ομάδας {group} υπερβαίνει την επιτρεπόμενη ποσότητα ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Μη έγκυρη ακολουθία ομάδας: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Δεν βρέθηκαν σειριακοί αριθμοί"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({len(serials)}) πρέπει να αντιστοιχεί στην ποσότητα ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Σφάλμα σύνδεσης"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Ο διακομιστής απάντησε με μη έγκυρο κωδικό κατάστασης"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Προέκυψε σφάλμα"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Ο διακομιστής ανταποκρίθηκε με \"Invalid Content-Length value\""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Η εικόνα είναι πολύ μεγάλη σε μέγεθος"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Η λήψη εικόνας ξεπέρασε το μέγιστο μέγεθος"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Ο διακομιστής επέστρεψε σφάλμα %1$d %2$s"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Το URL δεν είναι έγκυρο αρχείο εικόνας"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Βουλγάρικα"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Τσέχικα"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Δανέζικα"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Γερμανικά"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Ελληνικά"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Αγγλικά"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Ισπανικά"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Ισπανικά (Μεξικό)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Φαρσί / Περσικά"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Φινλανδικά"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Γαλλικά"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Εβραϊκά"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Ινδικά"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Ούγγρικα"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Ιταλικά"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Ιαπωνικά"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Κορεάτικα"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr ""
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Νορβηγικά"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Πολωνικά"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Πορτογαλικά"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Πορτογαλικά (Βραζιλίας)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr ""
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Ρωσικά"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Σλοβάκικα"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Σλοβενικά"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Σερβικά"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Σουηδικά"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Ταϊλανδέζικα"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Τούρκικα"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr ""
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Βιετναμέζικα"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Κινέζικα (απλοποιημένα)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Κινέζικα (Παραδοσιακά)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] Σύνδεση στην εφαρμογή"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Σφάλμα κατά την εκτέλεση επικύρωσης προσθέτου"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Τα μεταδεδομένα πρέπει να είναι ένα αντικείμενο dict python"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Μεταδεδομένα Πρόσθετου"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON πεδίο μεταδεδομένων, για χρήση από εξωτερικά πρόσθετα"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Λανθασμένο μοτίβο"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Δώσατε λάθος μορφή κλειδιού"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Λείπει το απαραίτητο κλειδί"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Το πεδίο δεν μπορεί να είναι άδειο"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Η αναφορά πρέπει να ταιριάζει με το απαιτούμενο μοτίβο"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Ο αριθμός αναφοράς είναι πολύ μεγάλος"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχουν στον ίδιο γονέα"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Μη έγκυρη επιλογή"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Όνομα"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Περιγραφή"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Περιγραφή (προαιρετική)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Μονοπάτι"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Σημειώσεις Markdown (προαιρετικό)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Στοιχεία Barcode"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Δεδομένα barcode τρίτων"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Μοναδικό hash δεδομένων barcode"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Βρέθηκε υπάρχων barcode"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Σφάλμα διακομιστή"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Πρέπει να είναι αριθμός"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Νόμισμα"
msgid "Select currency from available options"
msgstr "Επιλέξτε νόμισμα από τις διαθέσιμες επιλογές"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Δεν έχετε άδεια να αλλάξετε αυτόν τον ρόλο χρήστη."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Μόνο υπερχρήστες (superusers) μπορούν να δημιουργήσουν νέους χρήστες"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Ο λογαριασμός σας δημιουργήθηκε."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Παρακαλούμε χρησιμοποιήστε τη λειτουργία επαναφοράς κωδικού πρόσβασης για να συνδεθείτε"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Καλώς ήρθατε στο InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Μη έγκυρη τιμή"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Αρχείο Δεδομένων"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Επιλέξτε ένα αρχείο για ανέβασμα"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Μη υποστηριζόμενος τύπος αρχείου"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Το αρχείο είναι πολύ μεγάλο"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Δεν βρέθηκαν στήλες στο αρχείο"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Δεν βρέθηκαν γραμμές δεδομένων στο αρχείο"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Δεν παρασχέθηκαν σειρές δεδομένων"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Δεν δόθηκαν στήλες δεδομένων"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Λείπει απαιτούμενη στήλη: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Διπλή στήλη: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Απομακρυσμένες Εικόνες"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "Δεν έχει ρυθμιστεί διεύθυνση ηλεκτρονικού ταχυδρομείου"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Ο έλεγχος συστήματος για το Inventree απέτυχε"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Άγνωστη βάση δεδομένων"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Μη έγκυρη φυσική μονάδα"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Μη έγκυρος κωδικός συναλλάγματος"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Η μέση τιμή δεν πρέπει να είναι αρνητική"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Η μέση τιμή δεν πρέπει να υπερβαίνει το 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Μη έγκυρη τιμή για υπέρβαση"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Τροποποίηση πληροφοριών χρήστη"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Ορισμός Κωδικού Πρόσβασης"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Τα πεδία κωδικού πρόσβασης πρέπει να ταιριάζουν"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Δόθηκε λάθος κωδικός πρόσβασης"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Πληροφορίες συστήματος"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Σχετικά με το InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Γονική Κατασκευή"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Εκδόθηκε από"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Αναλώσιμο"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Προαιρετικό"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Υπό παρακολούθηση"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Κατανεμημένο"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Κατανεμημένο"
msgid "Available"
msgstr "Διαθέσιμο"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Εξάρτημα"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Σειρά Κατασκευής"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Σειρά Κατασκευής"
msgid "Build Orders"
msgstr "Δημιουργία Παραγγελιών"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Μη έγκυρη επιλογή για γονική κατασκευή"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "Εξάρτημα από εντολή κατασκευής δεν μπορεί να αλλάξει"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Αναφορά Παραγγελίας Κατασκευής"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Αναφορά"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Σύντομη περιγραφή της κατασκευής (προαιρετικό)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατασκευή"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Εξάρτημα"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Επιλέξτε τμήμα για κατασκευή"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Κωδικός Παραγγελίας Πωλήσεων"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "SalesOrder στην οποία έχει διατεθεί αυτό το build"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Τοποθεσία Προέλευσης"
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr "Επιλέξτε τοποθεσία από την οποία θα γίνει απόθεμα, για αυτή την κατασκευή (αφήστε κενό για να πάρετε από οποιαδήποτε θέση αποθήκευσης)"
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Τοποθεσία Προορισμού"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Επιλέξτε την τοποθεσία όπου θα αποθηκευτούν τα ολοκληρωμένα στοιχεία"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Ποσότητα Κατασκευής"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Αριθμός αντικειμένων για κατασκευή"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Ολοκληρωμένα αντικείμενα"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Αριθμός αντικειμένων αποθέματος που έχουν ολοκληρωθεί"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Κατάσταση Κατασκευής"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Κωδικός κατάστασης κατασκευής"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Κωδικός Παρτίδας"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Κωδικός παρτίδας για αυτήν την κατασκευή"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Ημερομηνία Δημιουργίας"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Ημερομηνία ολοκλήρωσης στόχου"
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Ημερομηνία ολοκλήρωσης της κατασκευής. Η κατασκευή θα καθυστερήσει μετά από αυτή την ημερομηνία."
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Ημερομηνία ολοκλήρωσης"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "ολοκληρώθηκε από"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Εκδόθηκε από"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Χρήστης που εξέδωσε αυτήν την παραγγελία κατασκευής"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Υπεύθυνος"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Χρήστης ή ομάδα υπεύθυνη για αυτή την εντολή κατασκευής"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Εξωτερικοί σύνδεσμοι"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Σύνδεσμος προς εξωτερική διεύθυνση URL"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Προτεραιότητα Κατασκευής"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Προτεραιότητα αυτής της εντολής κατασκευής"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Κωδικός Έργου"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Κωδικός έργου για αυτήν την εντολή κατασκευής"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr "Η παραγγελία κατασκευής {build} έχει ολοκλ
msgid "A build order has been completed"
msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Δεν καθορίστηκε έξοδος κατασκευής"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "Η ποσότητα δεν μπορεί να είναι μεγαλύτερη από την παραγόμενη ποσότητα"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr "Το προϊόν κατασκευής {serial} δεν έχει περάσει όλες τις απαιτούμενες δοκιμές"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Αντικείμενο κατασκευής"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Ποσότητα"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Απαιτούμενη ποσότητα για την εντολή κατασκευής"
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο"
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})"
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν ταιριάζει με τη γραμμή ΤΥ"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Στοιχείο Αποθέματος"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Στοιχείο πηγαίου αποθέματος"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Εγκατάσταση σε"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Αποθήκη προορισμού"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Κατασκευή Εξόδου"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "Το εξερχόμενο μέρος δεν ταιριάζει με το μέρος BuildOrder"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Αυτή η έξοδος κατασκευής δεν έχει εκχωρηθεί πλήρως"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Ακέραιη ποσότητα που απαιτείται για ανιχνεύσιμα μέρη"
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη"
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Σειριακοί αριθμοί"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Εισάγετε ποσότητα για την έξοδο κατασκευής"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Τοποθεσία"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Αυτόματη κατανομή των απαιτούμενων στοιχείων με τους αντίστοιχους σειριακούς αριθμούς"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr "Οι παρακάτω σειριακοί αριθμοί υπάρχουν ήδη ή δεν είναι έγκυροι"
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Πρέπει να παρέχεται μια λίστα με τα αποτελέσματα κατασκευής"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Θέση αποθέματος για απορριφθείσες παραγωγές"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Απόρριψη Κατανομών"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Απορρίψτε τυχόν κατανομές αποθέματος για παραγωγές που έχουν απορριφθεί"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Αιτία απόρριψης προϊόντων κατασκευής"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Τοποθεσία για ολοκληρωμένα προϊόντα κατασκευής"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Κατάσταση"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Αποδοχή Ελλιπούς Δέσμευσης"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Ολοκλήρωσε τα προϊόντα εάν το απόθεμα δεν έχει δεσμευτεί πλήρως"
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Αφαίρεση Ατελείωτων Προϊόντων"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "Διαγράψτε τυχόν προϊόντα κατασκευής που δεν έχουν ολοκληρωθεί"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Δεν επιτρέπεται"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Αποδοχή ως κατανάλωση για αυτή την παραγγελία κατασκευής"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Αποδέσμευση πριν από την ολοκλήρωση αυτής της παραγγελίας κατασκευής"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Υπερ-δεσμευμένο Απόθεμα"
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr "Πώς θέλετε να χειριστείτε το επιπλέον απόθεμα που έχει δεσμευτεί στην παραγγελία κατασκευής"
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Μερικά στοιχεία αποθέματος έχουν υπερ-δεσμευτεί"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Αποδοχή Μη Δεσμευμένων"
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr "Αποδεχτείτε ότι αντικείμενα αποθέματος δεν έχουν δεσμευτεί πλήρως σε αυτή την παραγγελία κατασκευής"
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Το απαιτούμενο απόθεμα δεν έχει δεσμευτεί πλήρως"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Αποδοχή Μη Ολοκληρωμένων"
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr "Αποδεχτείτε ότι ο απαιτούμενος αριθμός προϊόντων κατασκευής δεν έχει ολοκληρωθεί"
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Ο απαιτούμενος αριθμός προϊόντων δεν έχει ολοκληρωθεί"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "Η παραγγελία κατασκευής έχει ελλιπή προϊόντα"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Γραμμή Κατασκευής"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Προϊόν Κατασκευής"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "Το προϊόν κατασκευής πρέπει να δείχνει στην ίδια κατασκευή"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Αντικείμενο Γραμμής Κατασκευής"
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr "bom_item.part πρέπει να δείχνει στο ίδιο εξάρτημα με τη εντολή κατασκευής"
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Σε εκκρεμότητα"
@@ -1722,21 +1750,21 @@ msgstr "Σε εκκρεμότητα"
msgid "Production"
msgstr "Παραγωγή"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Ακυρώθηκε"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Ολοκληρώθηκε"
@@ -1744,165 +1772,162 @@ msgstr "Ολοκληρώθηκε"
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Αποσύνδεση Barcode"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Σύνδεση Barcode"
-#: build/templates/build/build_base.html:56
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:55
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Ενέργειες εκτύπωσης"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Εκτύπωση αναφοράς εντολών κατασκευής"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Εντολές κατασκευής"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Επεξεργασία Κατασκευής"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Αντιγραφή Κατασκευής"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Ακύρωση κατασκευής"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Διαγραφή Κατασκευής"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Ολοκλήρωση Κατασκευής"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Περιγραφή Κατασκευής"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Δεν έχουν δημιουργηθεί προϊόντα για αυτήν την εντολή κατασκευής"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Η εντολή Κατασκευής είναι έτοιμη για να επισημανθεί ως ολοκληρωμένη"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Η Εντολή Κατασκευής δεν μπορεί να ολοκληρωθεί καθώς υπάρχουν εκκρεμή προϊόντα"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Ο απαιτούμενος αριθμός προϊόντων δεν έχει ακόμα ολοκληρωθεί"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr "Το Απόθεμα δεν έχει κατανεμηθεί πλήρως σε αυτή την Εντολή Κατασκευής"
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Επιθυμητή Προθεσμία"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Αυτή η κατασκευή είχε προθεσμία %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Αυτή η κατασκευή είχε προθεσμία %(target)s"
msgid "Overdue"
msgstr "Εκπρόθεσμη"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Ολοκληρωμένα Προϊόντα"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Εντολές Πώλησης"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Προτεραιότητα"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Διαγραφή Εντολής Κατασκευής"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Κωδικός QR Εντολής Κατασκευής"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Σύνδεση Barcode με την Εντολή Κατασκευής"
@@ -1968,8 +1994,9 @@ msgstr "Προέλευση Αποθέματος"
msgid "Stock can be taken from any available location."
msgstr "Το απόθεμα μπορεί να ληφθεί από οποιαδήποτε διαθέσιμη τοποθεσία."
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Προορισμός"
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Χρήστης"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Σύνδεσμος"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Συνημμένο"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Το αρχείο λείπει"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Λείπει ο εξωτερικός σύνδεσμος"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Επιλέξτε αρχείο για επισύναψη"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Σχόλιο"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Όνομα αρχείου"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Τοποθετήθηκε"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Αποστάλθηκε"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Χάθηκε"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Επιστράφηκε"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Σε Εξέλιξη"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Επιστροφή"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Επισκευή"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Αντικατάσταση"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Επιστροφή χρημάτων"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Απόρριψη"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Απορρίφθηκε"
msgid "Quarantined"
msgstr "Σε Καραντίνα"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Καταχώρηση παλαιού αποθέματος"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Το αντικείμενο αποθεμάτων δημιουργήθηκε"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Έγινε συγχώνευση αποθεμάτων"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Εκχωρημένος σειριακός κωδικός"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Απόθεμα που μετρήθηκε"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Προστέθηκε απόθεμα χειροκίνητα"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Αφαιρέθηκε απόθεμα χειροκίνητα"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Η τοποθεσία τροποποιήθηκε"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Το απόθεμα ενημερώθηκε"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Εγκαταστάθηκε στη συναρμολόγηση"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Αφαιρέθηκε από τη συναρμολόγηση"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Εγκαταστάθηκε αντικείμενο"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Αφαιρέθηκε αντικείμενο"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Έγινε διαχωρισμός από το γονεϊκό αρχείο"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Διαχωρίστηκε θυγατρικό στοιχείο"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Έγινε συγχώνευση αποθεμάτων"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Μετατράπηκε σε παραλλαγή"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Δημιουργήθηκε η έξοδος παραγγελίας"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Η έξοδος της σειράς κατασκευής ολοκληρώθηκε"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Η εντολή κατασκευής απορρίφθηκε"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Κατανάλωση με εντολή κατασκευής"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Αποστολή έναντι Εντολής Πώλησης"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Λήφθηκε έναντι Εντολής Αγοράς"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Επιστράφηκε έναντι Εντολής Αγοράς"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Απεστάλη στον πελάτη"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Επιστράφηκε από πελάτη"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Κατασκευή"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po
index 7821b27066..0ad7995204 100644
--- a/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 08:21+0000\n"
+"POT-Creation-Date: 2024-11-04 10:24+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,78 +18,86 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr ""
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr ""
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr ""
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr ""
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr ""
@@ -133,397 +141,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr ""
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr ""
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr ""
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr ""
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr ""
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr ""
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr ""
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr ""
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr ""
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr ""
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr ""
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr ""
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
-
-#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/locales.py:39
-msgid "Norwegian"
+msgid "Lithuanian"
msgstr ""
#: InvenTree/locales.py:40
-msgid "Polish"
+msgid "Latvian"
msgstr ""
#: InvenTree/locales.py:41
-msgid "Portuguese"
+msgid "Dutch"
msgstr ""
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
+msgid "Norwegian"
msgstr ""
#: InvenTree/locales.py:43
-msgid "Romanian"
+msgid "Polish"
msgstr ""
#: InvenTree/locales.py:44
-msgid "Russian"
+msgid "Portuguese"
msgstr ""
#: InvenTree/locales.py:45
-msgid "Slovak"
+msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/locales.py:46
-msgid "Slovenian"
+msgid "Romanian"
msgstr ""
#: InvenTree/locales.py:47
-msgid "Serbian"
+msgid "Russian"
msgstr ""
#: InvenTree/locales.py:48
-msgid "Swedish"
+msgid "Slovak"
msgstr ""
#: InvenTree/locales.py:49
-msgid "Thai"
+msgid "Slovenian"
msgstr ""
#: InvenTree/locales.py:50
-msgid "Turkish"
+msgid "Serbian"
msgstr ""
#: InvenTree/locales.py:51
-msgid "Ukrainian"
+msgid "Swedish"
msgstr ""
#: InvenTree/locales.py:52
-msgid "Vietnamese"
+msgid "Thai"
msgstr ""
#: InvenTree/locales.py:53
-msgid "Chinese (Simplified)"
+msgid "Turkish"
msgstr ""
#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -533,15 +553,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -553,30 +573,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -586,230 +606,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -817,16 +836,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -837,268 +908,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1111,610 +1130,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1723,21 +1751,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1745,165 +1773,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1911,49 +1936,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1969,8 +1995,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1982,23 +2009,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2006,8 +2034,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2053,7 +2081,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2121,7 +2149,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2140,43 +2168,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2193,1883 +2216,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4117,15 +4296,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4156,429 +4335,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4591,7 +4770,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4606,11 +4785,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4631,16 +4811,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4654,7 +4834,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4663,19 +4843,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4715,7 +4895,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4738,7 +4918,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4765,7 +4945,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4812,24 +4992,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4838,8 +5018,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4888,112 +5068,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5023,99 +5204,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5167,19 +5348,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5203,52 +5384,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5308,79 +5489,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5388,751 +5565,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6185,12 +6393,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6243,7 +6451,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6278,45 +6486,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6324,40 +6532,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6371,7 +6579,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6384,39 +6592,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6428,7 +6637,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6441,11 +6650,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6453,23 +6662,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6482,8 +6691,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6510,15 +6719,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6546,94 +6755,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6642,789 +6855,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7450,340 +7663,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7933,9 +8158,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8094,142 +8319,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8283,13 +8512,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8325,17 +8554,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8407,7 +8636,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8487,7 +8716,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8499,78 +8728,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8592,75 +8828,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8680,6 +8916,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8757,7 +9029,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8795,11 +9067,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8823,7 +9095,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8895,19 +9167,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8944,10 +9216,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8956,7 +9224,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8985,17 +9253,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9054,81 +9322,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9136,11 +9480,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9168,7 +9512,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9205,135 +9553,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9366,9 +9722,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9380,13 +9736,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9404,15 +9765,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9421,17 +9780,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9451,67 +9811,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9527,11 +9887,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9551,8 +9911,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9561,594 +9921,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10176,107 +10540,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10297,7 +10661,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10317,7 +10681,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10329,208 +10693,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10542,84 +10910,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10631,10 +10999,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11108,9 +11472,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11131,7 +11495,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11197,7 +11561,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11254,7 +11618,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11281,7 +11645,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11533,7 +11897,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11739,23 +12103,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11788,7 +12153,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11802,7 +12167,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12040,7 +12405,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12157,7 +12522,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12177,30 +12542,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12232,7 +12597,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12244,396 +12609,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12642,7 +13007,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12650,231 +13015,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12978,19 +13343,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13132,7 +13497,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13367,19 +13732,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13420,7 +13785,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13432,7 +13797,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13484,23 +13849,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13576,267 +13941,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13879,7 +14220,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13888,7 +14229,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13904,188 +14245,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14210,11 +14544,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14285,7 +14616,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14309,7 +14640,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14321,18 +14652,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14389,216 +14708,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14735,10 +15054,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15013,10 +15328,6 @@ msgstr ""
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"
@@ -15142,27 +15453,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15206,34 +15517,34 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po
index 0594d1a455..04b5b71a0b 100644
--- a/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/es/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: es-ES\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "endpoint API no encontrado"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "El usuario no tiene permiso para ver este modelo"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
-msgstr ""
+msgstr "Unidad proporcionada no válida ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Ningún valor proporcionado"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "No se pudo convertir {original} a {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "La cantidad suministrada es inválida"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Cantidad proporcionada no válida"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "La cantidad suministrada es inválida ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
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:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Ingrese la fecha"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Notas"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, 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:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "El valor proporcionado no coincide con el patrón requerido: "
@@ -126,403 +134,415 @@ msgstr "Debe escribir el mismo correo electrónico cada vez."
#: InvenTree/forms.py:221
msgid "MFA Registration is disabled."
-msgstr ""
+msgstr "Registro MFA está deshabilitado."
#: InvenTree/forms.py:259 InvenTree/forms.py:267
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:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "El dominio de correo electrónico proporcionado no está aprobado."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registro deshabilitado."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Cantidad proporcionada no válida"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "No se ha proporcionado un número de serie"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Serie duplicada"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Rango de grupo inválido: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Rango del grupo {group} supera la cantidad permitida ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Secuencia de grupo inválida: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Numeros de serie no encontrados"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Los números de serie únicos ({len(serials)}) debe coincidir con la cantidad ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Eliminar etiquetas HTML de este valor"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Error de conexión"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "El servidor respondió con código de estado no válido"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Se ha producido una excepción"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
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:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "El tamaño de la imagen es demasiado grande"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "La descarga de imagen excedió el tamaño máximo"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "El servidor remoto devolvió una respuesta vacía"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "La URL proporcionada no es un archivo de imagen válido"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
-msgstr ""
+msgstr "Árabe"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Búlgaro"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Checo"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Danés"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Alemán"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Griego"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Inglés"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Español"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Español (México)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
-msgstr ""
+msgstr "Estoniano"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persa"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finlandés"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Francés"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebreo"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
-msgstr ""
+msgstr "Hindú"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Húngaro"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japonés"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/locales.py:37
-msgid "Latvian"
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:40
+msgid "Latvian"
+msgstr "Letón"
+
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Holandés"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Noruego"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polaco"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugués"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugués (Brasileño)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
-msgstr ""
+msgstr "Rumano"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Ruso"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Eslovaco"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Esloveno"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbio"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Sueco"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Tailandés"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
-msgstr ""
+msgstr "Ucraniano"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Chino (Simplificado)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Chino (Tradicional)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Correo electrónico"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
-msgstr ""
+msgstr "Error al ejecutar la validación del plug-in"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Los metadatos deben ser un objeto diccionario de python"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Metadatos del complemento"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "Campo de metadatos JSON, para uso por complementos externos"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Patrón con formato incorrecto"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Clave de formato especificado desconocida"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Falta la clave de formato necesaria"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "El campo de servidor no puede estar vacío"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "La referencia debe coincidir con la expresión regular {pattern}"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "El número de referencia es demasiado grande"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Los nombres duplicados no pueden existir bajo el mismo padre"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Selección no válida"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Nombre"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Descripción"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Descripción (opcional)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Ruta"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Notas de Markdown (opcional)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Datos de código de barras"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Datos de código de barras de terceros"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Hash del Código de barras"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Hash único de datos de código de barras"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Código de barras existente encontrado"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Error de servidor"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Se ha registrado un error por el servidor."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Debe ser un número válido"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,17 +552,17 @@ msgstr "Moneda"
msgid "Select currency from available options"
msgstr "Seleccionar moneda de las opciones disponibles"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Nombre de usuario"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Nombre"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
-msgstr ""
+msgstr "Nombre del usuario"
#: InvenTree/serializers.py:412 templates/InvenTree/settings/user.html:41
msgid "Last Name"
@@ -550,32 +570,32 @@ msgstr "Apellido"
#: InvenTree/serializers.py:412
msgid "Last name of the user"
-msgstr ""
+msgstr "Apellido del usuario"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
-msgstr ""
+msgstr "Dirección de correo del usuario"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
-msgstr ""
+msgstr "Personal"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
-msgstr ""
+msgstr "Tiene este usuario permisos de personal"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
-msgstr ""
+msgstr "Superusuario"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
-msgstr ""
+msgstr "Es este usuario un superusuario"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr "Activo"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
-msgstr ""
+msgstr "Esta cuenta de usuario está activa"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "No tiene permiso para cambiar este rol de usuario."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Solo los superusuarios pueden crear nuevos usuarios"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Su cuenta ha sido creada."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
-msgstr ""
+msgstr "Por favor, utilice la función de restablecer la contraseña para iniciar sesión"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Bienvenido a InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Valor inválido"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Archivo de datos"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Seleccione el archivo para subir"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Tipo de archivo no soportado"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "El archivo es demasiado grande"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "No hay columnas en el archivo"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "No hay filas de datos en el archivo"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "No se proporcionaron filas de datos"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "No hay columnas de datos proporcionadas"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Falta la columna requerida: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Columna duplicada: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Imagen remota"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL de imagen remota"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "La descarga de imágenes desde la URL remota no está habilitada"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Falló la comprobación en segundo plano del worker"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "No se ha configurado el backend de correo"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Las comprobaciones de estado del sistema InvenTree fallaron"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Base de datos desconocida"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Unidad física inválida"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "No es un código de moneda válido"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "El valor excedente no debe ser negativo"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "El excedente no debe superar el 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Valor no válido para sobrecarga"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Editar datos del usuario"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Configurar contraseña"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Los campos de contraseña deben coincidir"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Contraseña incorrecta proporcionada"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Información del sistema"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Acerca de InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Construcción o Armado Superior"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
-msgstr ""
+msgstr "Asignado a mí"
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Emitido por"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
-msgstr ""
+msgstr "Asignadas a"
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "La compilación debe cancelarse antes de poder ser eliminada"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Consumible"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Opcional"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Montaje"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Rastreado"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
-msgstr ""
+msgstr "Comprobable"
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Asignadas"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Asignadas"
msgid "Available"
msgstr "Disponible"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Parte"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Construir órden"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,270 +907,218 @@ msgstr "Construir órden"
msgid "Build Orders"
msgstr "Construir órdenes"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
-msgstr ""
+msgstr "BOM de ensamblado no ha sido validado"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
-msgstr ""
+msgstr "La orden de construcción no puede ser creado para una parte inactiva"
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
-msgstr ""
+msgstr "La orden de construcción no puede ser creada para una parte desbloqueada"
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Opción no válida para la construcción padre"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
-msgstr ""
+msgstr "Se debe especificar un usuario o grupo responsable"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "La parte del pedido de construcción no puede ser modificada"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Número de orden de construcción o armado"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Referencia"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Breve descripción de la construcción (opcional)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Orden de Construcción o Armado a la que se asigna"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Parte"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Seleccionar parte a construir o armar"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Referencia de orden de venta"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Orden de Venta a la que se asigna"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Ubicación de la fuente"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Ubicación de destino"
-#: build/models.py:302
+#: build/models.py:301
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:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Cantidad a crear"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Número de objetos existentes a construir"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Elementos completados"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Número de productos en stock que se han completado"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Estado de la construcción"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Código de estado de construcción"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Numero de lote"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Número de lote de este producto final"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Fecha de Creación"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Fecha límite de finalización"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Fecha de finalización"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "terminado por"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Emitido por"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "El usuario que emitió esta orden"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Responsable"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Usuario o grupo responsable de esta orden de construcción"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Link externo"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Enlace a URL externa"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Prioridad de construcción"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Prioridad de esta orden de construcción"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Código del proyecto"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Código de proyecto para esta orden de ensamble"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
-msgstr ""
+msgstr "No se pudo descargar la tarea para completar las asignaciones de construcción"
#: build/models.py:673
#, python-brace-format
@@ -1110,610 +1129,619 @@ msgstr "El pedido {build} ha sido procesado"
msgid "A build order has been completed"
msgstr "Pedido #[order] ha sido procesado"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr "Los números de serie deben ser proporcionados para las partes rastreables"
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "No se ha especificado salida de construcción"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "La construcción de la salida ya está completa"
-#: build/models.py:973
+#: build/models.py:975
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:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "La cantidad debe ser mayor que cero"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "La cantidad no puede ser mayor que la cantidad de salida"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
-msgstr ""
+msgstr "La construcción {serial} no ha pasado todas las pruebas requeridas"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
-msgstr ""
+msgstr "Construir línea de pedido"
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Ensamblar equipo"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Cantidad"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Cantidad requerida para orden de ensamble"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Artículo de stock sobreasignado"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Cantidad asignada debe ser mayor que cero"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "La cantidad debe ser 1 para el stock serializado"
-#: build/models.py:1675
+#: build/models.py:1699
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:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Artículo de stock"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Producto original de stock"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Cantidad de stock a asignar para construir"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Instalar en"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Artículo de stock de destino"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
-msgstr ""
+msgstr "Nivel de construcción"
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Nombre de parte"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
-msgstr ""
+msgstr "Etiqueta del código del proyecto"
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr "Crear construcciones hijas"
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr "Generar automáticamente órdenes de construcción hijas"
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Resultado de la construcción o armado"
-#: build/serializers.py:184
+#: build/serializers.py:231
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:188
+#: build/serializers.py:235
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:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Esta salida de construcción ya ha sido completada"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Esta salida de construcción no está completamente asignada"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Ingrese la cantidad para la producción de la construcción"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Cantidad entera requerida para partes rastreables"
-#: build/serializers.py:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Números de serie"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Introduzca los números de serie de salidas de construcción"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Ubicación"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
-msgstr ""
+msgstr "Ubicación de stock para objetos construidos"
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Autoasignar Números de Serie"
-#: build/serializers.py:331
+#: build/serializers.py:378
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:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
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:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Debe proporcionarse una lista de salidas de construcción"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Ubicación de almacén para salidas descartadas"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Descartar asignaciones"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Descartar cualquier asignación de existencias para las salidas descartadas"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Razón para descartar la salida de ensamble(s)"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Ubicación para las salidas de construcción completadas"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Estado"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Aceptar Asignación Incompleta"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Completar salidas si el inventario no se ha asignado completamente"
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
-msgstr ""
+msgstr "Consumir Stock Asignado"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
-msgstr ""
+msgstr "Consume cualquier stock que ya ha sido asignado a esta construcción"
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Eliminar salidas incompletas"
-#: build/serializers.py:662
+#: build/serializers.py:706
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:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "No permitido"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Aceptar como consumido por este pedido de construcción"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Liberar antes de completar esta orden de construcción"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Stock sobreasignado"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Algunos artículos de inventario han sido sobreasignados"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Aceptar no asignado"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "El stock requerido no ha sido completamente asignado"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Aceptar incompleto"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "La cantidad de construcción requerida aún no se ha completado"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
-msgstr ""
+msgstr "La orden de construcción tiene órdenes hijas de construcción abiertas"
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
-msgstr ""
+msgstr "Orden de construcción debe estar en estado de producción"
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "El orden de construcción tiene salidas incompletas"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Linea de ensamble"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Resultado de la construcción o armado"
-#: build/serializers.py:836
+#: build/serializers.py:880
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:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Crear partida"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "El artículo debe estar en stock"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Cantidad disponible ({q}) excedida"
-#: build/serializers.py:955
+#: build/serializers.py:999
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:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Debe proporcionarse la adjudicación de artículos"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Ubicación de inventario donde las partes deben ser obtenidas (dejar en blanco para tomar de cualquier ubicación)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Excluir ubicación"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Excluir artículos de stock de esta ubicación seleccionada"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Stock intercambiable"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Los artículos de inventario en múltiples ubicaciones se pueden utilizar de forma intercambiable"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Sustituir stock"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Permitir la asignación de partes sustitutas"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Elementos opcionales"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Asignar artículos de la BOM opcionales para construir la orden"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
-msgstr ""
+msgstr "Error al iniciar la tarea de asignación automática"
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
-msgstr ""
+msgstr "Número de pieza del proveedor"
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Número de parte de fabricante"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr "Nombre de localización"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
-msgstr ""
+msgstr "Referencia de orden de Ensamblado"
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
-msgstr ""
+msgstr "Referencia BOM"
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Paquetes"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "ID de Parte"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr "IPN de la parte"
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Descripción de parte"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
-msgstr ""
+msgstr "ID de la parte BOM"
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
-msgstr ""
+msgstr "Nombre de parte la BOM"
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Número de serie"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
-msgstr ""
+msgstr "Cantidad Asignada"
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr "Cantidad disponible"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
-msgstr ""
+msgstr "ID de la categoría por pieza"
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
-msgstr ""
+msgstr "Nombre de la categoría por pieza"
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Rastreable"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
-msgstr ""
+msgstr "Heredado"
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr "Permitir variantes"
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Item de Lista de Materiales"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Stock Asignado"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "En pedido"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr "En producción"
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
+#: build/serializers.py:1384 part/serializers.py:958
+msgid "External Stock"
+msgstr "Stock externo"
+
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
msgid "Available Stock"
msgstr "Stock Disponible"
-#: build/serializers.py:1325
+#: build/serializers.py:1386
msgid "Available Substitute Stock"
-msgstr ""
+msgstr "Stock sustituto disponible"
-#: build/serializers.py:1326
+#: build/serializers.py:1387
msgid "Available Variant Stock"
-msgstr ""
+msgstr "Stock variable disponible"
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
-msgid "External Stock"
-msgstr ""
-
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Pendiente"
@@ -1722,21 +1750,21 @@ msgstr "Pendiente"
msgid "Production"
msgstr "Producción"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
-msgstr ""
+msgstr "En espera"
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Cancelado"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Terminado"
@@ -1744,165 +1772,162 @@ msgstr "Terminado"
msgid "Stock required for build order"
msgstr "Stock requerido para la orden de construcción"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Orden de construcción atrasada"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr "El pedido de construcción {bo} está atrasado"
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Miniatura de parte"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Acciones para código de barras"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Mostrar código QR"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Desvincular Código de Barras"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Vincular Código de Barras"
-#: build/templates/build/build_base.html:56
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:55
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Imprimir acciones"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Imprimir informe de orden de construcción"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Acciones de construcción o armado"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Editar construcción o armado"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Construcción duplicada"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
-msgstr ""
+msgstr "Mantener Construcción"
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Cancelar construcción o armado"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Eliminar construcción o armado"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
-msgstr ""
+msgstr "Emitir Construcción"
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Completar construcción"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Descripción de Construcción"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "No se han creado salidas para esta orden de construcción"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Orden de construcción está lista para marcar como completada"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "La orden de construcción no se puede completar ya que existen salidas pendientes"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "La cantidad de construcción requerida aún no se ha completado"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Fecha objetivo"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Esta construcción vence el %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,51 +1935,52 @@ msgstr "Esta construcción vence el %(target)s"
msgid "Overdue"
msgstr "Vencido"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Salidas completadas"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Orden de Venta"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Prioridad"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
-msgstr ""
+msgstr "Emitir Orden de Construcción"
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
-msgstr ""
+msgstr "¿Emitir esta orden de construcción?"
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Eliminar Orden de Trabajo"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Código QR de la Orden de Trabajo"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
-msgstr ""
+msgstr "Enlazar código de barras para construir el orden"
#: build/templates/build/detail.html:15
msgid "Build Details"
@@ -1968,8 +1994,9 @@ 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:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Destinación"
@@ -1981,23 +2008,24 @@ msgstr "Se requiere ubicación de destino"
msgid "Allocated Parts"
msgstr "Partes asignadas"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Lote"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Creado"
@@ -2005,8 +2033,8 @@ msgstr "Creado"
msgid "No target date set"
msgstr "Sin fecha objetivo"
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Completados"
@@ -2021,7 +2049,7 @@ msgstr "Órdenes de Trabajo herederas"
#: build/templates/build/detail.html:177
msgid "Build Order Line Items"
-msgstr ""
+msgstr "Detalles de la orden de fabricación"
#: build/templates/build/detail.html:181
msgid "Deallocate stock"
@@ -2052,13 +2080,13 @@ msgid "Order required parts"
msgstr "Pedir partes necesarias"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Partes del pedido"
#: build/templates/build/detail.html:205
msgid "Available stock has been filtered based on specified source location for this build order"
-msgstr ""
+msgstr "Las existencias disponibles han sido filtradas con base en la ubicación especificado para esta orden de fabricación"
#: build/templates/build/detail.html:215
msgid "Incomplete Build Outputs"
@@ -2110,7 +2138,7 @@ msgstr "Asignación Completa"
#: build/templates/build/detail.html:459
msgid "All lines have been fully allocated"
-msgstr ""
+msgstr "Todas las líneas han sido completamente asignadas"
#: build/templates/build/index.html:18 part/templates/part/detail.html:335
msgid "New Build Order"
@@ -2120,7 +2148,7 @@ msgstr "Nueva Orden de Trabajo"
msgid "Build Order Details"
msgstr "Configuración de Pedido de Trabajo"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2137,45 +2165,40 @@ msgstr "Salidas incompletas"
#: build/templates/build/sidebar.html:24
#: part/templates/part/part_sidebar.html:56
msgid "Test Statistics"
-msgstr ""
+msgstr "Probar estadísticas"
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
-msgstr ""
+msgstr "¿Es enlace?"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
-msgstr ""
+msgstr "¿Es archivo?"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
-msgstr ""
+msgstr "El usuario no tiene permiso para eliminar estos adjuntos"
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
-msgstr ""
-
-#: common/currency.py:132
-msgid "Invalid currency code"
-msgstr ""
+msgstr "El usuario no tiene permiso para eliminar este adjunto"
#: common/currency.py:134
+msgid "Invalid currency code"
+msgstr "Código de divisa inválido"
+
+#: common/currency.py:136
msgid "Duplicate currency code"
-msgstr ""
+msgstr "Código de divisa duplicado"
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
-msgstr ""
+msgstr "No se han proporcionado códigos de divisa válidos"
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Sin plugin"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Formato de archivo no soportado: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Error al leer el archivo (codificación inválida)"
@@ -2192,1883 +2215,2039 @@ msgstr "Error leyendo el archivo (dimensión incorrecta)"
msgid "Error reading file (data could be corrupted)"
msgstr "Error al leer el archivo (los datos podrían estar corruptos)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Archivo"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Seleccione el archivo a cargar"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "Archivo {name.title()}"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "Seleccione el archivo {name} para subir"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Actualizado"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Fecha y hora de la última actualización"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
-msgstr ""
+msgstr "La URL del sitio está bloqueada por su configuración"
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Código único del proyecto"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Descripción del proyecto"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr "Usuario o grupo responsable de este projecto"
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
-msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Valor de ajuste"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "El valor elegido no es una opción válida"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "El valor debe ser un valor booleano"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "El valor debe ser un entero"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "Cadena de clave debe ser única"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Sin grupo"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Reinicio requerido"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Migraciones pendientes"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr "Número de migraciones de base de datos pendientes"
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Nombre de la instancia del servidor"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Descriptor de cadena para la instancia del servidor"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Usar nombre de instancia"
-#: common/models.py:1253
+#: common/models.py:1310
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:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Restringir mostrar 'acerca de'"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Mostrar la modal `about` solo para superusuarios"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Nombre de empresa"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Nombre interno de empresa"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "URL Base"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "URL base para la instancia del servidor"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Moneda predeterminada"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Seleccione la moneda base para los cálculos de precios"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
-msgstr ""
+msgstr "Monedas admitidas"
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
-msgstr ""
+msgstr "Listado de códigos de divisa soportados"
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr "Intervalo de actualización de moneda"
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Con qué frecuencia actualizar los tipos de cambio (establecer a cero para desactivar)"
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "días"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr "Plugin de Actualización de Moneda"
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr "Plugin de actualización de moneda a usar"
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Descargar desde URL"
-#: common/models.py:1307
+#: common/models.py:1364
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:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Límite de tamaño de descarga"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Tamaño máximo de descarga permitido para la imagen remota"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "Agente de usuario usado para descargar desde la URL"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr "Validación estricta de URL"
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr "Requerir especificación de esquema al validar URLs"
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Requiere confirmación"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Requiere confirmación explícita del usuario para ciertas acciones."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Profundidad del árbol"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Actualizar intervalo de actualización"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Copia de seguridad automática"
-#: common/models.py:1355
+#: common/models.py:1412
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:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Intervalo de respaldo automático"
-#: common/models.py:1361
+#: common/models.py:1418
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:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Intervalo de eliminación de tareas"
-#: common/models.py:1369
+#: common/models.py:1426
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:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Intervalo de eliminación de registro de errores"
-#: common/models.py:1378
+#: common/models.py:1435
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:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Intervalo de eliminación de notificaciones"
-#: common/models.py:1387
+#: common/models.py:1444
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:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Soporte de código de barras"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr "Habilitar el soporte para escáner de códigos de barras en la interfaz web"
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Retraso de entrada de código de barras"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Tiempo de retraso en la lectura de códigos de barras"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Soporte para Webcam de código de barras"
-#: common/models.py:1408
+#: common/models.py:1477
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:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
-msgstr ""
+msgstr "Mostrar datos del código de barra como texto en el navegador"
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
-msgstr ""
+msgstr "Complemento para generar códigos de barra"
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
-msgstr ""
+msgstr "Complemento a usar para la generación de datos de códigos de barra internos"
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Revisiones de partes"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Habilitar campo de revisión para parte"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "Patrón de expresión regular para IPN de la parte coincidente"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Permitir IPN duplicado"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Permitir que varias partes compartan el mismo IPN"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Permitir editar IPN"
-#: common/models.py:1454
+#: common/models.py:1523
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:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Copiar parte de datos BOM"
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr "Copiar datos BOM por defecto al duplicar una parte"
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Copiar parámetros de parte"
-#: common/models.py:1466
+#: common/models.py:1535
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:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Copiar parte de datos de prueba"
-#: common/models.py:1472
+#: common/models.py:1541
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:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Copiar plantillas de parámetros de categoría"
-#: common/models.py:1478
+#: common/models.py:1547
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:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Plantilla"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Las partes son plantillas por defecto"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "Las partes pueden ser ensambladas desde otros componentes por defecto"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Componente"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "Las partes pueden ser usadas como subcomponentes por defecto"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Comprable"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Las partes son comprables por defecto"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Vendible"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Las partes se pueden vender por defecto"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Las partes son rastreables por defecto"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
-msgstr ""
+msgstr "Virtual"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Las partes son virtuales por defecto"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Mostrar importación en vistas"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Mostrar el asistente de importación en algunas vistas de partes"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Mostrar partes relacionadas"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Mostrar partes relacionadas para una parte"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Datos iniciales de existencias"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Datos iniciales del proveedor"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Formato de visualización de Nombre de Parte"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Formato para mostrar el nombre de la parte"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Icono por defecto de la categoría de parte"
-#: common/models.py:1559
+#: common/models.py:1628
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:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Forzar unidades de parámetro"
-#: common/models.py:1566
+#: common/models.py:1635
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:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Mínimo de lugares decimales en el precio"
-#: common/models.py:1574
+#: common/models.py:1643
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:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr "Máximo de lugares decimales en el precio"
-#: common/models.py:1587
+#: common/models.py:1656
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:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Usar precios de proveedor"
-#: common/models.py:1600
+#: common/models.py:1669
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:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Anulación del historial de compra"
-#: common/models.py:1608
+#: common/models.py:1677
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:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Usar precio del artículo de almacén"
-#: common/models.py:1616
+#: common/models.py:1685
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:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Edad del precio del artículo de almacén"
-#: common/models.py:1624
+#: common/models.py:1693
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:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Usar precios variantes"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Incluir variantes de precios en los cálculos generales de precios"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Solo variantes activas"
-#: common/models.py:1639
+#: common/models.py:1708
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:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Intervalo de reconstrucción de precios"
-#: common/models.py:1647
+#: common/models.py:1716
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:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Precios internos"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Habilitar precios internos para partes"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Anulación del precio interno"
-#: common/models.py:1662
+#: common/models.py:1731
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:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Habilitar impresión de etiquetas"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Habilitar impresión de etiquetas desde la interfaz web"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "PPP de la imagen de etiqueta"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Habilitar informes"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Habilitar generación de informes"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Modo de depuración"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Generar informes en modo de depuración (salida HTML)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
-msgstr ""
+msgstr "Registrar errores de reportes"
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
-msgstr ""
+msgstr "Registrar errores ocurridos al generar reportes"
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Tamaño de página"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Tamaño de página predeterminado para informes PDF"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Habilitar informes de prueba"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Habilitar generación de informes de prueba"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Adjuntar informes de prueba"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Seriales únicos globalmente"
-#: common/models.py:1721
+#: common/models.py:1776
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:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Autollenar números de serie"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Autorellenar números de serie en formularios"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Eliminar existencias agotadas"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
-msgstr ""
+msgstr "Determina el comportamiento por defecto al agotarse un artículo del inventario"
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Plantilla de código de lote"
-#: common/models.py:1742
+#: common/models.py:1797
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:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Expiración de stock"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Habilitar la funcionalidad de expiración de stock"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Vender existencias caducadas"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Permitir venta de existencias caducadas"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Tiempo histórico de Stock"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Crear Stock Caducado"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Permitir crear con stock caducado"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Control de Stock"
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos"
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Icono por defecto de ubicación de almacén"
-#: common/models.py:1781
+#: common/models.py:1836
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:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Mostrar Articulos de Stock Instalados"
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr "Mostrar los artículos de stock instalados en las tablas de stock"
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
-msgstr ""
+msgstr "Permitir transferencia Sin Existencias"
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
-msgstr ""
+msgstr "Permitir que artículos del inventario sin existencias puedan ser transferidos entre ubicaciones de inventario"
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Patrón de Referencia de Ordenes de Armado"
-#: common/models.py:1810
+#: common/models.py:1865
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:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
-msgstr ""
+msgstr "Requerir Dueño Responsable"
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
-msgstr ""
+msgstr "Se debe asignar un dueño responsable a cada orden"
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
-msgstr ""
+msgstr "Requerir Parte Activa"
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
-msgstr ""
+msgstr "Impedir la creación de órdenes de fabricación para partes inactivas"
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
-msgstr ""
+msgstr "Requerir Parte Bloqueada"
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
-msgstr ""
+msgstr "Impedir la creación de órdenes de fabricación para partes bloqueadas"
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
-msgstr ""
+msgstr "Impedir la creación de órdenes de fabricación a menos que se haya validado la lista de materiales"
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
-msgstr ""
+msgstr "Prevenir la finalización de la orden de construcción hasta que todas las órdenes hijas estén cerradas"
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
-msgstr ""
+msgstr "Bloquear hasta que los Tests pasen"
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
-msgstr ""
+msgstr "Evitar que las construcciones sean completadas hasta que todas las pruebas requeridas pasen"
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Habilitar órdenes de devolución"
-#: common/models.py:1859
+#: common/models.py:1914
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:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Patrón de referencia de orden de devolución"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
-msgstr ""
+msgstr "Patrón requerido para generar el campo de referencia de devolución de la orden"
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Editar ordenes de devolución completadas"
-#: common/models.py:1880
+#: common/models.py:1935
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:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Patrón de Referencia de Ordenes de Venta"
-#: common/models.py:1888
+#: common/models.py:1943
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:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Envío Predeterminado de Ordenes de Venta"
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr "Habilitar la creación de envío predeterminado con ordenes de entrega"
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Editar Ordenes de Venta Completados"
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Permitir la edición de ordenes de venta después de que hayan sido enviados o completados"
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
-msgstr ""
+msgstr "Marcar pedidos enviados como completados"
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
-msgstr ""
+msgstr "Los pedidos marcados como enviados se completarán automáticamente, evitando el estado de \"envío\""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Patrón de Referencia de Orden de Compra"
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Patrón requerido para generar el campo de referencia de la Orden de Compra"
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Editar Ordenes de Compra Completados"
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
-msgstr ""
+msgstr "Permitir la edición de órdenes de venta después de que hayan sido enviados o completados"
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr "Autocompletar Ordenes de compra"
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
-msgstr ""
+msgstr "Marcar automáticamente las órdenes de compra como completas cuando se reciben todos los artículos de línea"
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Habilitar función de contraseña olvidada"
-#: common/models.py:1954
+#: common/models.py:2009
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:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Habilitar registro"
-#: common/models.py:1960
+#: common/models.py:2015
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:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "Habilitar SSO"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "Habilitar SSO en las páginas de inicio de sesión"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Habilitar registro SSO"
-#: common/models.py:1973
+#: common/models.py:2028
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:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
-msgstr ""
+msgstr "Habilitar sincronización de grupo SSO"
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
-msgstr ""
+msgstr "Habilitar la sincronización de grupos de Inventree con grupos proporcionados por el IdP"
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
-msgstr ""
+msgstr "Clave de grupo SSO"
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
-msgstr ""
+msgstr "El nombre del atributo reclamado por el grupo proporcionado por el IdP"
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
-msgstr ""
+msgstr "Mapa del grupo SSO"
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
-msgstr ""
+msgstr "Un mapeo de grupos SSO a grupos de Inventree locales. Si el grupo local no existe, se creará."
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
-msgstr ""
+msgstr "Eliminar grupos fuera de SSO"
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Email requerido"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Requiere usuario para suministrar correo al registrarse"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "Auto-rellenar usuarios SSO"
-#: common/models.py:2019
+#: common/models.py:2074
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:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "Correo dos veces"
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr "Al registrarse pregunte dos veces a los usuarios por su correo"
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Contraseña dos veces"
-#: common/models.py:2032
+#: common/models.py:2087
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:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Dominios permitidos"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
-msgstr ""
+msgstr "Restringir el registro a ciertos dominios (separados por comas, comenzando por @)"
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Grupo al registrarse"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
-msgstr ""
+msgstr "Grupo al que se asignan nuevos usuarios al registrarse. Si la sincronización de grupo SSO está activada, este grupo sólo se establece si no se puede asignar ningún grupo desde el IdP."
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Forzar MFA"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Los usuarios deben utilizar seguridad multifactor."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Comprobar complementos al iniciar"
-#: common/models.py:2061
+#: common/models.py:2116
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:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
-msgstr ""
+msgstr "Revisar actualizaciones del plugin"
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
-msgstr ""
+msgstr "Habilitar comprobaciones periódicas para actualizaciones de plugins instalados"
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "Habilitar integración de URL"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Habilitar plugins para añadir rutas de URL"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Habilitar integración de navegación"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Habilitar plugins para integrar en la navegación"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "Habilitar integración de la aplicación"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Habilitar plugins para añadir aplicaciones"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Habilitar integración de programación"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Habilitar plugins para ejecutar tareas programadas"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Habilitar integración de eventos"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Habilitar plugins para responder a eventos internos"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Habilitar códigos de proyecto"
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr "Habilitar códigos de proyecto para rastrear proyectos"
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
-msgstr ""
+msgstr "Funcionalidad de inventario"
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
-msgstr ""
+msgstr "Habilite la funcionalidad de inventario para registrar los niveles de existencias y calcular el valor de las existencias"
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr "Excluir Ubicaciones Externas"
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
-msgstr ""
+msgstr "Excluir artículos en existencia en ubicaciones externas de los cálculos de inventario"
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
-msgstr ""
+msgstr "Periodo de inventario automático"
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
-msgstr ""
+msgstr "Número de días entre el registro automático del inventario (establecer en cero para desactivarlo)"
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr "Intervalo de borrado de informe"
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
-msgstr ""
+msgstr "Los informes de inventario se eliminarán después de un número de días especificado"
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr "Mostrar nombres completos de los usuarios"
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr "Mostrar nombres completos de usuarios en lugar de nombres de usuario"
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
-msgstr ""
+msgstr "Habilitar datos de estación de prueba"
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
+msgstr "Habilitar la recolección de datos de estaciones de prueba para resultados de prueba"
+
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas"
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Ocultar partes inactivas"
-#: common/models.py:2214
+#: common/models.py:2281
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:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Mostrar partes suscritas"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Mostrar las partes suscritas en la página principal"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Mostrar categorías suscritas"
-#: common/models.py:2227
+#: common/models.py:2294
msgid "Show subscribed part categories on the homepage"
msgstr "Mostrar categorías de partes suscritas en la página de inicio"
-#: common/models.py:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Mostrar últimas partes"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Mostrar las últimas partes en la página de inicio"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
-msgstr ""
+msgstr "Mostrar BOM inválidos"
-#: common/models.py:2239
+#: common/models.py:2306
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:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Mostrar cambios recientes de stock"
-#: common/models.py:2245
+#: common/models.py:2312
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:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Mostrar stock bajo"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Mostrar artículos de stock bajo en la página de inicio"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Mostrar stock agotado"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Mostrar artículos agotados en la página de inicio"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Mostrar stock necesario"
-#: common/models.py:2263
+#: common/models.py:2330
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:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Mostrar stock caducado"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Mostrar artículos de stock caducados en la página de inicio"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Mostrar stock obsoleto"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Mostrar artículos de stock obsoletos en la página de inicio"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Mostrar trabajos pendientes"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Mostrar trabajos pendientes en la página de inicio"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Mostrar trabajos vencidos"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Mostrar trabajos pendientes en la página de inicio"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Mostrar Órdenes de Compra Pendientes"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Mostrar las OC destacadas en la página de inicio"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Mostrar OC atrasadas"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Mostrar las OC vencidas en la página de inicio"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Mostrar OV pendiemtes"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Mostrar OV pendientes en la página de inicio"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Mostrar OV atrasadas"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Mostrar OV atrasadas en la página de inicio"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
-msgstr ""
+msgstr "Mostrar envíos pendientes de SO"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
-msgstr ""
+msgstr "Mostrar envíos SO pendientes en la página de inicio"
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Mostrar novedades"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Mostrar las últimas novedades de InvenTree en la página de inicio"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Mostrar etiqueta interior"
-#: common/models.py:2330
+#: common/models.py:2397
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:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Impresora predeterminada"
-#: common/models.py:2338
+#: common/models.py:2405
msgid "Configure which label printer should be selected by default"
-msgstr ""
+msgstr "Configure qué etiqueta de impresión debería ser seleccionada por defecto"
-#: common/models.py:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Mostrar informe en línea"
-#: common/models.py:2346
+#: common/models.py:2413
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:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Buscar partes"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
-msgstr ""
+msgstr "Mostrar partes en la ventana de vista previa de búsqueda"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Buscar partes de proveedor"
-#: common/models.py:2359
+#: common/models.py:2426
msgid "Display supplier parts in search preview window"
-msgstr ""
+msgstr "Mostrar partes de proveedores en la ventana de vista previa de búsqueda"
-#: common/models.py:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Buscar Partes del Fabricante"
-#: common/models.py:2365
+#: common/models.py:2432
msgid "Display manufacturer parts in search preview window"
-msgstr ""
+msgstr "Mostrar partes de productores en la ventana de vista previa de búsqueda"
-#: common/models.py:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Ocultar Partes Inactivas"
-#: common/models.py:2371
+#: common/models.py:2438
msgid "Excluded inactive parts from search preview window"
msgstr "Excluir las partes inactivas de la ventana de previsualización de búsqueda"
-#: common/models.py:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Buscar categorías"
-#: common/models.py:2377
+#: common/models.py:2444
msgid "Display part categories in search preview window"
msgstr "Mostrar categorias de la parte en la ventana de previsualización de búsqueda"
-#: common/models.py:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Buscar inventario"
-#: common/models.py:2383
+#: common/models.py:2450
msgid "Display stock items in search preview window"
msgstr "Mostrar artículos del stock en la ventana de previsualización de búsqueda"
-#: common/models.py:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Ocultar Artículos del Stock Agotados"
-#: common/models.py:2390
+#: common/models.py:2457
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Excluir artículos de stock que no están disponibles en la ventana de previsualización de búsqueda"
-#: common/models.py:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Buscar ubicaciones"
-#: common/models.py:2397
+#: common/models.py:2464
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:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Buscar empresas"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Mostrar empresas en la ventana de vista previa de búsqueda"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Buscar Pedidos de Construcción"
-#: common/models.py:2409
+#: common/models.py:2476
msgid "Display build orders in search preview window"
-msgstr ""
+msgstr "Mostrar órdenes de fabricación en la ventana de vista previa de búsqueda"
-#: common/models.py:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Buscar órdenes de compra"
-#: common/models.py:2415
+#: common/models.py:2482
msgid "Display purchase orders in search preview window"
-msgstr ""
+msgstr "Mostrar órdenes de compra en la ventana de vista previa de búsqueda"
-#: common/models.py:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Excluir pedidos de compra inactivos"
-#: common/models.py:2422
+#: common/models.py:2489
msgid "Exclude inactive purchase orders from search preview window"
-msgstr ""
+msgstr "Excluir órdenes de compra inactivas de la ventana de vista previa de búsqueda"
-#: common/models.py:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Buscar órdenes de venta"
-#: common/models.py:2429
+#: common/models.py:2496
msgid "Display sales orders in search preview window"
-msgstr ""
+msgstr "Mostrar órdenes de venta en la ventana de vista previa de búsqueda"
-#: common/models.py:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
-msgstr ""
+msgstr "Excluir órdenes de venta inactivas"
-#: common/models.py:2436
+#: common/models.py:2503
msgid "Exclude inactive sales orders from search preview window"
-msgstr ""
+msgstr "Excluir órdenes de venta inactivas de la ventana de vista previa de búsqueda"
-#: common/models.py:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Buscar órdenes de devolución"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
-msgstr ""
+msgstr "Mostrar órdenes de devolución en la ventana de vista previa de búsqueda"
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Resultados de la vista previa"
-#: common/models.py:2458
+#: common/models.py:2525
msgid "Number of results to show in each section of the search preview window"
msgstr ""
-#: common/models.py:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Búsqueda usando una expresión regular"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr "Habilitar expresiones regulares en las consultas de búsqueda"
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr "Búsqueda por palabra completa"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr "Las consultas de búsqueda devuelven resultados para palabras enteras coincidentes"
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Mostrar cantidad en formularios"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Mostrar la cantidad de partes disponibles en algunos formularios"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "Formularios de cierre de teclas de escape"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Usa la clave de escape para cerrar formularios modales"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Barra de navegación fija"
-#: common/models.py:2489
+#: common/models.py:2556
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:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Formato de Fecha"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Formato preferido para mostrar fechas"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Planificación de partes"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr ""
-#: common/models.py:2516
+#: common/models.py:2583
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2522
+#: common/models.py:2589
msgid "Table String Length"
-msgstr ""
+msgstr "Longitud del texto en las tablas"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
-msgstr ""
+msgstr "Longitud máxima para textos en tablas"
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr "Recibir reportes de error"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
-msgstr ""
+msgstr "Recibir notificación de errores del sistema"
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr "Últimas impresoras usadas"
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Usuario"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr "Cantidad de salto de precio"
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Precio"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr "Precio unitario a la cantidad especificada"
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
-msgstr ""
+msgstr "Endpoint"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Punto final en el que se recibe este webhook"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Nombre para este webhook"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Está activo este webhook"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
-msgstr ""
+msgstr "Token"
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Token para el acceso"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Clave"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Secreto compartido para HMAC"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "ID de mensaje"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Identificador único para este mensaje"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Servidor desde el cual se recibió este mensaje"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Encabezado"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Encabezado del mensaje"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Cuerpo"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Cuerpo de este mensaje"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Endpoint en el que se recibió este mensaje"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Trabajado en"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "¿El trabajo en este mensaje ha terminado?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Título"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Enlace"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publicado"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autor"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Resumen"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Leer"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "¿Esta noticia ya fue leída?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Archivo de imagen"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
-msgstr ""
+msgstr "Unidad personalizada"
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
-msgstr ""
+msgstr "El símbolo de la unidad debe ser único"
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr "Nombre de unidad debe ser un identificador válido"
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr "Nombre de unidad"
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Símbolo"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr "Símbolo de unidad opcional"
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definición"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr "Definición de unidad"
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Archivo adjunto"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Archivo no encontrado"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Falta enlace externo"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Seleccionar archivo para adjuntar"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Comentario"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
-msgstr ""
+msgstr "Comentario de archivo adjunto"
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
-msgstr ""
+msgstr "Fecha de carga"
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
-msgstr ""
+msgstr "Fecha de carga del archivo"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
-msgstr ""
+msgstr "Tamaño del archivo"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
-msgstr ""
+msgstr "Tamaño del archivo en bytes"
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr "Clave"
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr "Nombre del estado"
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr "Etiqueta"
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr "Etiqueta que se mostrará en el frontend"
+
+#: common/models.py:3424
+msgid "Color"
+msgstr "Color"
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr "Color que se mostrará en el frontend"
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr "Llave lógica"
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr "Modelo"
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr "Estado personalizado"
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr "Estados personalizados"
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr "El modelo debe ser seleccionado"
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr "La clave debe ser seleccionada"
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr "La clave lógica debe ser seleccionada"
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr "Datos"
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Contexto"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Resultado"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Nuevo {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
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:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr "{verbose_name} cancelado"
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr "Artículos Recibidos"
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr "Los artículos han sido recibidos contra una orden de compra"
-#: common/notifications.py:339
+#: common/notifications.py:353
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:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr "Error generado por el complemento"
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr "Está en ejecución"
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr "Tareas pendientes"
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr "Tareas Programadas"
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr "Tareas fallidas"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr "Identificación de Tarea"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr "Identificación de tarea única"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr "Bloquear"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr "Bloquear hora"
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr "Nombre de la tarea"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr "Función"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr "Nombre de la Función"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr "Argumentos"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr "Argumentos de la tarea"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr "Argumentos de palabra clave"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr "Argumentos de palabra clave de tarea"
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Nombre de Archivo"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr "Coincidir Campos"
msgid "Match Items"
msgstr "Coincidir artículos"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Falló la coincidencia de campos"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Partes importadas"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Empresa"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Empresas"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Descripción de la empresa"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "Descripción de la empresa"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Página web"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "URL del sitio web de la empresa"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Teléfono"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Teléfono de contacto"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Correo electrónico de contacto"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Contacto"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Punto de contacto"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Enlace a información externa de la empresa"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
-msgstr ""
+msgstr "¿Esta empresa está activa?"
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
-msgstr ""
+msgstr "¿Es cliente?"
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "¿Vendes artículos a esta empresa?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
-msgstr ""
+msgstr "¿Es proveedor?"
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "¿Compras artículos de esta empresa?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
-msgstr ""
+msgstr "¿Es productor?"
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "¿Esta empresa fabrica partes?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Moneda predeterminada utilizada para esta empresa"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Dirección"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr "Direcciones"
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr "Seleccionar empresa"
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr "Título de dirección"
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr "Título que describe la entrada de dirección"
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr "Dirección principal"
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr "Establecer como dirección principal"
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr "Línea 1"
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr "Dirección línea 1"
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr "Línea 2"
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr "Dirección línea 2"
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr "Código postal"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr "Ciudad/región"
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr "Código postal de ciudad/región"
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr "Estado/provincia"
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr "Estado o provincia"
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr "País"
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr "Dirección de país"
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr "Notas de envío de mensajería"
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr "Notas para el mensajero de envío"
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr "Notas de envío internas"
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr "Notas de envío para uso interno"
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr "Enlace a información de dirección (externa)"
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Parte del fabricante"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Parte base"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Seleccionar parte"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Fabricante"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Seleccionar fabricante"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "URL para el enlace de parte del fabricante externo"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Descripción de la parte del fabricante"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Nombre del parámetro"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Valor"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Valor del parámetro"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Unidades"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Unidades de parámetro"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Parte del proveedor"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr "Las unidades de paquete deben ser compatibles con las unidades de partes de base"
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr "Las unidades de paquete deben ser mayor que cero"
-#: company/models.py:740
+#: company/models.py:737
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:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Proveedor"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Seleccionar proveedor"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Unidad de mantenimiento de stock de proveedores"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Seleccionar parte del fabricante"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "URL del enlace de parte del proveedor externo"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Descripción de la parte del proveedor"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Nota"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "costo base"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Embalaje de partes"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Cantidad de paquete"
-#: company/models.py:860
+#: company/models.py:857
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:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "múltiple"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Pedido múltiple"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Cantidad disponible del proveedor"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Disponibilidad actualizada"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Fecha de última actualización de los datos de disponibilidad"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Moneda predeterminada utilizada para este proveedor"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
-msgstr ""
+msgstr "Nombre de la empresa"
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "En Stock"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr "Inactivo"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Crear orden de compra"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Editar datos de la empresa"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Editar empresa"
@@ -4605,11 +4784,12 @@ msgstr "Eliminar Empresa"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Descargar desde URL"
msgid "Delete image"
msgstr "Borrar imagen"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Cliente"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Teléfono"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr "Eliminar imagen"
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr "Eliminar imagen asociada a esta empresa"
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Eliminar"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr "Subir Imagen"
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr "Descargar imagen"
@@ -4714,7 +4894,7 @@ msgstr "Stock del Proveedor"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Nueva orden de compra"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ msgstr "Stock asignado"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Fabricantes"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Pedir ítem"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Editar fabricante de la parte"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Eliminar fabricante de la parte"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Componente interno"
@@ -4837,8 +5017,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Elementos de Stock Asignados"
msgid "Contacts"
msgstr "Contactos"
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
msgid "Edit Supplier Part"
msgstr "Editar Parte del Proveedor"
-#: company/templates/company/supplier_part.html:68
#: company/templates/company/supplier_part.html:69
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Duplicar parte del proveedor"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr "Eliminar parte del proveedor"
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Eliminar parte del proveedor"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "No hay información de proveedor disponible"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
-msgstr ""
+msgstr "SKU"
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Stock del Proveedor"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Crear nuevo artículo de stock"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Nuevo artículo de stock"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Pedidos de partes al proveedor"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Información de precios"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Agregar descuento de precio"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr "Código QR de parte del Proveedor"
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
-msgstr ""
+msgstr "Actualizar disponibilidad de la parte"
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Elementos de stock"
@@ -5022,117 +5203,117 @@ msgstr "Nuevo Cliente"
msgid "New Company"
msgstr "Nueva empresa"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr "Clave personalizada de estado"
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr "Información adicional de estado para este artículo"
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Colocado"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
-msgstr ""
+msgstr "Formato de exportación inválido"
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
-msgstr ""
+msgstr "Archivo de datos a importar"
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
-msgstr ""
+msgstr "Columnas"
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
-msgstr ""
+msgstr "Valores predeterminados del campo"
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
-msgstr ""
+msgstr "Filtros del campo"
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
-msgstr ""
+msgstr "Algunos campos requeridos no han sido mapeados"
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
-msgstr ""
+msgstr "La columna ya fue mapeada a un campo de la base de datos"
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
-msgstr ""
+msgstr "La columna no existe en el archivo de datos"
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
-msgstr ""
-
-#: importer/models.py:417
-msgid "Selected field is read-only"
-msgstr ""
-
-#: importer/models.py:422 importer/models.py:493
-msgid "Import Session"
-msgstr ""
+msgstr "El campo no existe en el modelo destino"
#: importer/models.py:426
+msgid "Selected field is read-only"
+msgstr "El campo seleccionado es de solo lectura"
+
+#: importer/models.py:431 importer/models.py:502
+msgid "Import Session"
+msgstr "Sesión de importación"
+
+#: importer/models.py:435
msgid "Field"
-msgstr ""
+msgstr "Campo"
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
-msgstr ""
+msgstr "Columna"
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
-msgstr ""
+msgstr "Número de fila"
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
-msgstr ""
+msgstr "Datos de la fila original"
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr "Datos"
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr "Errores"
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr "Válido"
#: importer/operations.py:28 importer/operations.py:49
msgid "Unsupported data file format"
-msgstr ""
+msgstr "Formato de archivo de datos no soportado"
#: importer/operations.py:40
msgid "Failed to open data file"
-msgstr ""
+msgstr "Error al abrir el archivo de datos"
#: importer/operations.py:51
msgid "Invalid data file dimensions"
-msgstr ""
+msgstr "Dimensiones del archivo de datos inválidas"
#: importer/serializers.py:91
msgid "Invalid field defaults"
-msgstr ""
+msgstr "Valores predeterminados del campo inválidos"
#: importer/serializers.py:104
msgid "Invalid field overrides"
@@ -5140,114 +5321,114 @@ msgstr ""
#: importer/serializers.py:117
msgid "Invalid field filters"
-msgstr ""
+msgstr "Filtros del campo inválidos"
#: importer/serializers.py:178
msgid "Rows"
-msgstr ""
+msgstr "Filas"
#: importer/serializers.py:179
msgid "List of row IDs to accept"
-msgstr ""
+msgstr "Listado de IDs de fila a aceptar"
#: importer/serializers.py:192
msgid "No rows provided"
-msgstr ""
+msgstr "No hay filas"
#: importer/serializers.py:196
msgid "Row does not belong to this session"
-msgstr ""
+msgstr "La fila no pertenece a esta sesión"
#: importer/serializers.py:199
msgid "Row contains invalid data"
-msgstr ""
+msgstr "La fila contiene datos inválidos"
#: importer/serializers.py:202
msgid "Row has already been completed"
-msgstr ""
-
-#: importer/status_codes.py:11
-msgid "Initializing"
-msgstr ""
-
-#: importer/status_codes.py:12
-msgid "Mapping Columns"
-msgstr ""
+msgstr "La fila ya se ha completado"
#: importer/status_codes.py:13
-msgid "Importing Data"
-msgstr ""
+msgid "Initializing"
+msgstr "Inicializando"
-#: importer/status_codes.py:16
+#: importer/status_codes.py:18
+msgid "Mapping Columns"
+msgstr "Mapeando columnas"
+
+#: importer/status_codes.py:21
+msgid "Importing Data"
+msgstr "Importando datos"
+
+#: importer/status_codes.py:24
msgid "Processing Data"
-msgstr ""
+msgstr "Procesando datos"
#: importer/validators.py:21
msgid "Data file exceeds maximum size limit"
-msgstr ""
+msgstr "El archivo de datos excede el tamaño máximo"
#: importer/validators.py:26
msgid "Data file contains no headers"
-msgstr ""
+msgstr "El archivo de datos no tiene cabeceras"
#: importer/validators.py:29
msgid "Data file contains too many columns"
-msgstr ""
+msgstr "El archivo de datos tiene demasiadas columnas"
#: importer/validators.py:32
msgid "Data file contains too many rows"
-msgstr ""
+msgstr "El archivo de datos tiene demasiadas filas"
#: importer/validators.py:53
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr "Copias"
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
-msgstr ""
+msgstr "Número de copias a imprimir para cada etiqueta"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr "Conectado"
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Desconocido"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr "Impresión"
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr "Sin archivos multimedia"
-#: machine/machine_types/label_printer.py:235
-msgid "Paper jam"
-msgstr ""
-
#: machine/machine_types/label_printer.py:236
+msgid "Paper jam"
+msgstr "Atascamiento de papel"
+
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr "Desconectado"
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr "Impresora de Etiquetas"
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr "Imprime directamente etiquetas para varios artículos."
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr "Ubicación de la Impresora"
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Precio Total"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr "Estado del pedido"
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Referencia del pedido"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
-msgstr ""
+msgstr "Destacado"
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
-msgstr ""
+msgstr "Tiene Código de Proyecto"
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
-msgstr ""
+msgstr "Tiene Precio"
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr "No se encontró ninguna orden de compra coincidente"
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr "Orden"
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
-msgstr ""
+msgstr "Orden completada"
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
-msgstr ""
+msgstr "Orden pendiente"
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Orden de compra"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr "Orden de devolución"
@@ -5387,751 +5564,782 @@ msgstr "Orden de devolución"
msgid "Total price for this order"
msgstr "Precio total para este pedido"
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr "Moneda de pedido"
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
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:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr "El contacto no coincide con la empresa seleccionada"
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr "Descripción del pedido (opcional)"
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr "Seleccione el código del proyecto para este pedido"
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Enlace a Url externa"
-#: order/models.py:310
+#: order/models.py:317
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:324
+#: order/models.py:331
msgid "Created By"
msgstr "Creado por"
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr "Usuario o grupo responsable de este pedido"
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr "Punto de contacto para este pedido"
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr "Dirección de la empresa para este pedido"
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Referencia del pedido"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Estado de la orden de compra"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Empresa de la cual se están encargando los artículos"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Referencia del proveedor"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Código de referencia de pedido del proveedor"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "recibido por"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Fecha de emisión"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Fecha de expedición del pedido"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "La fecha de pedido fue completada"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr "El proveedor de la parte debe coincidir con el proveedor de PO"
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "La cantidad debe ser un número positivo"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Empresa a la que se venden los artículos"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
-msgstr ""
+msgstr "Estado de la orden de venta"
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Referencia del cliente "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Código de referencia de pedido del cliente"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Fecha de envío"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "enviado por"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
-msgstr ""
+msgstr "La orden ya fue completada"
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
-msgstr ""
+msgstr "La orden ya fue cancelada"
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr "Sólo una orden abierta puede ser marcada como completa"
-#: order/models.py:1088
+#: order/models.py:1105
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:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "El pedido no se puede completar porque hay partidas incompletas"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Cantidad del artículo"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Referencia de partida"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Notas de partida"
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr "Fecha objetivo para esta partida (dejar en blanco para usar la fecha de destino de la orden)"
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr "Descripción de partida (opcional)"
-#: order/models.py:1420
-msgid "Context"
-msgstr "Contexto"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "Contexto adicional para esta línea"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Precio unitario"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "La parte del proveedor debe coincidir con el proveedor"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "eliminado"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Parte del proveedor"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Recibido"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Número de artículos recibidos"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Precio de Compra"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Precio de compra unitario"
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr "¿Dónde quiere el comprador almacenar este objeto?"
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
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:1642
+#: order/models.py:1658
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:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Precio de Venta"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Precio de venta unitario"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Enviado"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Cantidad enviada"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Fecha del envío"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr "Fecha de entrega"
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr "Fecha de entrega del envío"
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Revisado por"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Usuario que revisó este envío"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Envío"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Número de envío"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Número de Seguimiento"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Información de seguimiento del envío"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Número de factura"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Número de referencia para la factura asociada"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "El envío ya ha sido enviado"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "El envío no tiene artículos de stock asignados"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "El artículo de stock no ha sido asignado"
-#: order/models.py:1973
+#: order/models.py:2006
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:1976
+#: order/models.py:2009
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:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "La cantidad de asignación no puede exceder la cantidad de stock"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr "La cantidad debe ser 1 para el stock serializado"
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "La orden de venta no coincide con el envío"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "El envío no coincide con el pedido de venta"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Línea"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Referencia del envío del pedido de venta"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Ítem"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Seleccionar artículo de stock para asignar"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Especificar la cantidad de asignación de stock"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr "Referencia de la orden de devolución"
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr "Empresa de la cual se están devolviendo los artículos"
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr "Estado de la orden de devolución"
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
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:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr "Seleccionar el artículo a devolver del cliente"
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr "Fecha de recepción"
-#: order/models.py:2399
+#: order/models.py:2438
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:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr "Resultado"
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr "Salida para esta partida"
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr "Costo asociado con la devolución o reparación para esta partida"
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
-msgid "Completed Lines"
+#: order/serializers.py:87
+msgid "Order ID"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
+msgid "Completed Lines"
+msgstr "Líneas completadas"
+
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr "Nombre del proveedor"
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "El pedido no puede ser cancelado"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr "Permitir cerrar el pedido con partidas incompletas"
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr "El pedido tiene partidas incompletas"
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "El pedido no está abierto"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
-msgstr ""
+msgstr "Precio automático"
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
-msgstr ""
+msgstr "Calcular precio de compra automáticamente con base en los datos del proveedor"
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Moneda del precio de compra"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
-msgstr ""
+msgstr "Combinar artículos"
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Número de parte interna"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
-msgstr ""
+msgstr "Nombre interno de parte"
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "Debe especificar la parte del proveedor"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "La orden de compra debe especificarse"
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr "El proveedor debe coincidir con la orden de compra"
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "La orden de compra debe coincidir con el proveedor"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Partida"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "La partida no coincide con la orden de compra"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Seleccione la ubicación de destino para los artículos recibidos"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
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:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Introduzca números de serie para artículos de almacén entrantes"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Código de barras"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr "Código de barras escaneado"
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Código de barras en uso"
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr "Debe proporcionarse una cantidad entera para las partes rastreables"
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Se deben proporcionar las partidas"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "Se requiere ubicación de destino"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "Los valores del código de barras deben ser únicos"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Moneda del precio de venta"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr "No se proporcionaron detalles de envío"
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr "La partida no está asociada con este pedido"
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr "La cantidad debe ser positiva"
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Introduzca números de serie para asignar"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr "El envío ya ha sido enviado"
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr "El envío no está asociado con este pedido"
-#: order/serializers.py:1537
+#: order/serializers.py:1671
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:1544
-msgid "The following serial numbers are already allocated"
-msgstr "Los siguientes números de serie ya están asignados"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr "Partida de orden de devolución"
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr "La partida no coincide con la orden de devolución"
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr "La partida ya ha sido recibida"
-#: order/serializers.py:1790
+#: order/serializers.py:1942
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:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr "Moneda de precio de línea"
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Perdida"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Devuelto"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "En progreso"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Devolución"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Reparación"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Reemplazo"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Reembolso"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Rechazo"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr "Orden de compra atrasada"
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr "La orden de compra {po} está atrasada"
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr "Orden de venta atrasada"
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr "La orden de venta {so} está atrasada"
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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:62
-#: order/templates/order/sales_order_base.html:62
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr "Exportar pedido a archivo"
-#: order/templates/order/order_base.html:59
-#: order/templates/order/return_order_base.html:72
-#: order/templates/order/sales_order_base.html:71
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr "Acciones de pedido"
-#: order/templates/order/order_base.html:64
-#: order/templates/order/return_order_base.html:76
-#: order/templates/order/sales_order_base.html:75
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Editar pedido"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr "Duplicar orden"
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
-msgstr ""
+msgstr "Retener pedido"
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Cancelar orden"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr "Emitir pedido"
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Marcar pedido como completado"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Completar pedido"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr "Miniatura de la parte del proveedor"
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Descripción del pedido"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr "No hay información disponible sobre el proveedor"
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr "Partidas completadas"
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Incompleto"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr "Emitido"
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Costo total"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "No se ha podido calcular el costo total"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr "Duplicar selección"
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Articulos Recibidos"
msgid "Order Notes"
msgstr "Notas del pedido"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr "Miniatura del logo del cliente"
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr "Imprimir informe de orden de devolución"
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr "Imprimir lista de empaquetado"
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Referencia del cliente"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr "Costo Total"
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr "Detalles del pedido"
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr "Imprimir informe de orden de venta"
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr "Enviar artículos"
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
-msgstr ""
+msgstr "Marcar como enviado"
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr "Ordenes de venta completas"
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
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:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr "Envíos pendientes"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Acciones"
@@ -6383,39 +6591,40 @@ msgstr "Nuevo Envío"
msgid "Match Supplier Parts"
msgstr "Coincidir partes de proveedor"
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr "Orden de venta no encontrada"
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Precio no encontrado"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "Actualizado el precio unitario de {part} a {price}"
-#: order/views.py:421
+#: order/views.py:422
#, 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:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr "Revisión"
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Palabras claves"
@@ -6427,7 +6636,7 @@ msgstr "Imagen de parte"
msgid "Category ID"
msgstr "ID de Categoría"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "Nombre de categoría"
@@ -6440,11 +6649,11 @@ msgstr "ID de ubicación predeterminada"
msgid "Default Supplier ID"
msgstr "ID de proveedor predeterminado"
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr "Variante de"
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr "Stock mínimo"
@@ -6452,23 +6661,23 @@ msgstr "Stock mínimo"
msgid "Used In"
msgstr "Usado en"
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr "En construcción"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr "Costo mínimo"
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr "Costo máximo"
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr "Identificador de la clase o especie padre"
@@ -6481,8 +6690,8 @@ msgstr "Nombre del padre"
msgid "Category Path"
msgstr "Ruta de Categoría"
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,21 +6718,21 @@ msgstr "IPN del padre"
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr "Precio mínimo"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr "Precio máximo"
#: part/api.py:104
msgid "Starred"
-msgstr ""
+msgstr "Favoritos"
#: part/api.py:106
msgid "Filter by starred categories"
@@ -6531,108 +6740,112 @@ msgstr ""
#: part/api.py:123 stock/api.py:310
msgid "Depth"
-msgstr ""
+msgstr "Profundidad"
#: part/api.py:123
msgid "Filter by category depth"
-msgstr ""
+msgstr "Filtrar por profundidad de categoría"
#: part/api.py:141 stock/api.py:328
msgid "Top Level"
-msgstr ""
+msgstr "Nivel superior"
#: part/api.py:143
msgid "Filter by top-level categories"
-msgstr ""
+msgstr "Filtrar por categorías de nivel superior"
+
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr "En cascada"
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
-msgstr ""
+msgstr "Tiene resultados"
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr "Orden de compra entrante"
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr "Orden de venta saliente"
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr "Validación de Lista de Materiales"
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr "Esta opción debe ser seleccionada"
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Categoría"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Ubicación Predeterminada"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Inventario Total"
@@ -6641,789 +6854,789 @@ msgstr "Inventario Total"
msgid "Input quantity for price calculation"
msgstr "Cantidad de entrada para el cálculo del precio"
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoría de parte"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Categorías de parte"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Ubicación predeterminada para partes de esta categoría"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr "Estructural"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "Las partes no pueden asignarse directamente a una categoría estructural, pero pueden asignarse a categorías hijas."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Palabras clave predeterminadas"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr "Palabras clave por defecto para partes en esta categoría"
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr "Icono"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr "Icono (opcional)"
-#: part/models.py:178
+#: part/models.py:180
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:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr "Opción no válida para la parte principal"
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
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:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr "IPN duplicado no permitido en la configuración de partes"
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
-msgstr ""
+msgstr "La revisión de parte duplicada ya existe."
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr "Parte con este nombre, IPN y revisión ya existe."
-#: part/models.py:951
+#: part/models.py:1012
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:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Nombre de la parte"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr "Es plantilla"
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr "¿Es esta parte una parte de la plantilla?"
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr "¿Es esta parte una variante de otra parte?"
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr "Descripción de parte (opcional)"
-#: part/models.py:1015
+#: part/models.py:1076
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:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Categoría de parte"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr "Revisión de parte o número de versión"
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
-msgstr ""
+msgstr "¿Es esta parte una variante de otra parte?"
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
-msgstr ""
+msgstr "Variante de"
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr "¿Dónde se almacena este artículo normalmente?"
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr "Proveedor por defecto"
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr "Parte de proveedor predeterminada"
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr "Expiración por defecto"
-#: part/models.py:1130
+#: part/models.py:1191
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:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr "Nivel mínimo de stock permitido"
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr "Unidades de medida para esta parte"
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr "¿Se puede construir esta parte a partir de otras partes?"
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr "¿Se puede utilizar esta parte para construir otras partes?"
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr "¿Esta parte tiene seguimiento de objetos únicos?"
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr "¿Se puede comprar esta parte a proveedores externos?"
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr "¿Se puede vender esta parte a los clientes?"
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr "¿Está activa esta parte?"
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
-msgstr ""
+msgstr "Bloqueado"
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
-msgstr ""
+msgstr "Las partes bloqueadas no pueden ser editadas"
-#: part/models.py:1201
+#: part/models.py:1262
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:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr "Suma de verificación de BOM"
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr "Suma de verificación de BOM almacenada"
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr "BOM comprobado por"
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr "Fecha BOM comprobada"
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr "Creación de Usuario"
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
-msgstr ""
+msgstr "Dueño responsable de esta parte"
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr "Último inventario"
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr "Vender múltiples"
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr "Moneda utilizada para almacenar en caché los cálculos de precios"
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr "Costo mínimo de BOM"
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr "Costo mínimo de partes de componentes"
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr "Costo máximo de BOM"
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr "Costo máximo de partes de componentes"
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr "Costo mínimo de compra"
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr "Costo histórico mínimo de compra"
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr "Costo máximo de compra"
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr "Costo histórico máximo de compra"
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr "Precio interno mínimo"
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr "Costo mínimo basado en precios reducidos internos"
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr "Precio interno máximo"
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr "Costo máximo basado en precios reducidos internos"
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr "Precio mínimo de proveedor"
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr "Precio mínimo de la parte de proveedores externos"
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr "Precio máximo de proveedor"
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr "Precio máximo de la parte de proveedores externos"
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr "Costo mínimo de variante"
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr "Costo mínimo calculado de las partes variantes"
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr "Costo máximo de variante"
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr "Costo máximo calculado de las partes variantes"
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr "Anular el costo mínimo"
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
-msgstr ""
+msgstr "Reemplazar coste máximo"
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr "Costo mínimo general calculado"
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr "Precio de venta mínimo"
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr "Precio de venta mínimo basado en precios reducidos"
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr "Precio de venta máximo"
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr "Precio de venta máximo basado en precios reducidos"
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr "Costo de venta mínimo"
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr "Precio de venta mínimo histórico"
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr "Costo de Venta Máximo"
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
-msgstr ""
+msgstr "Precio de venta máximo histórico"
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr "Número de artículos"
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Fecha"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "Notas adicionales"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr "Costo de Stock Mínimo"
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr "Costo mínimo estimado del stock disponible"
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr "Informe"
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr "Número de partes"
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-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:3626
+msgid "Test templates can only be created for testable parts"
+msgstr "Las plantillas de prueba solo pueden ser creadas para partes de prueba"
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr "Nombre de prueba"
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr "Introduzca un nombre para la prueba"
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr "Descripción de prueba"
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr "Introduce la descripción para esta prueba"
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Habilitado"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr "Requerido"
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr "¿Es necesario pasar esta prueba?"
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr "Requiere valor"
-#: part/models.py:3635
+#: part/models.py:3686
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:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr "Adjunto obligatorio"
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?"
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr "Opciones"
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr "El nombre de parámetro en la plantilla tiene que ser único"
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr "Nombre de Parámetro"
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr "Casilla de verificación"
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr "¿Es este parámetro una casilla de verificación?"
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Opciones válidas para este parámetro (separados por comas)"
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr "Opción inválida para el valor del parámetro"
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr "Parte principal"
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Plantilla de parámetro"
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr "Valor del parámetro"
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valor predeterminado"
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr "Valor de parámetro por defecto"
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr "ID de parte o nombre de parte"
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr "Valor de ID de parte única"
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr "Valor IPN de parte"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr "Nivel"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr "Nivel de BOM"
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr "Seleccionar parte principal"
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr "Sub parte"
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr "Seleccionar parte a utilizar en BOM"
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr "Cantidad del artículo en BOM"
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr "Este artículo BOM es opcional"
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Este artículo de BOM es consumible (no está rastreado en órdenes de construcción)"
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Exceso"
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)"
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr "Referencia de artículo de BOM"
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr "Notas del artículo de BOM"
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr "Suma de verificación"
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr "Suma de verificación de línea de BOM"
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr "Validado"
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr "Este artículo de BOM ha sido validado"
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
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:4314
+#: part/models.py:4371
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:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr "La cantidad debe ser un valor entero para las partes rastreables"
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr "Debe especificar la subparte"
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr "Ítem de BOM sustituto"
-#: part/models.py:4572
+#: part/models.py:4634
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:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr "Artículo BOM superior"
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr "Sustituir parte"
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr "Parte 1"
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr "Parte 2"
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr "Seleccionar parte relacionada"
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr "Moneda de compra de ítem de stock"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
-msgstr ""
+msgstr "No hay partes seleccionadas"
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
-msgstr ""
+msgstr "Seleccionar categoría"
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr "Parte original"
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr "Seleccione la parte original a duplicar"
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Copiar Imagen"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr "Copiar imagen desde la parte original"
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr "Copiar BOM"
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr "Copiar la factura de materiales de la parte original"
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Copiar Parámetros"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr "Copiar datos del parámetro de la parte original"
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr "Copiar Notas"
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr "Cantidad Inicial de Stock"
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr "Seleccione proveedor (o déjelo en blanco para saltar)"
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Seleccionar fabricante (o dejar en blanco para saltar)"
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr "Número de parte del fabricante"
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr "La empresa seleccionada no es un proveedor válido"
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr "La empresa seleccionada no es un fabricante válido"
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr "Duplicar Parte"
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr "Stock Inicial"
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr "Crear Parte con cantidad inicial de stock"
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr "Información del proveedor"
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr "Añadir información inicial del proveedor para esta parte"
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr "Copiar Parámetros de Categoría"
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada"
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr "Imagen Existente"
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr "El archivo de imagen no existe"
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr "Generar informe"
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr "Actualizar partes"
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Falló la comprobación en segundo plano del worker"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr "Anular el valor calculado para precio mínimo"
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr "Precio mínimo de moneda"
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr "Precio máximo de moneda"
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr "Actualizar"
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr "El precio mínimo no debe ser mayor que el precio máximo"
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr "El precio máximo no debe ser inferior al precio mínimo"
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr "Puede construir"
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr "Seleccionar parte de la que copiar BOM"
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr "Eliminar Datos Existentes"
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr "Eliminar artículos BOM existentes antes de copiar"
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr "Incluye Heredado"
-#: part/serializers.py:1852
+#: part/serializers.py:1914
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:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr "Omitir filas no válidas"
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr "Activar esta opción para omitir filas inválidas"
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr "Copiar partes sustitutas"
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr "Limpiar BOM Existente"
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr "Varios resultados encontrados"
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr "No se encontraron partes coincidentes"
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr "La parte no está designada como componente"
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr "Cantidad no proporcionada"
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr "Cantidad no válida"
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr "Se requiere al menos un artículo BOM"
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr "Cantidad Total"
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr "Verificación de Inventario"
@@ -8093,142 +8318,146 @@ msgstr "Seleccionar formato de archivo"
msgid "Part List"
msgstr "Listado de artículos"
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
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:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "Suscríbete a las notificaciones de este artículo"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Imprimir etiqueta"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr "Mostrar información de precios"
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr "Acciones de stock"
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr "Contar stock de partes"
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr "Transferir stock de partes"
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr "Acciones para partes"
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr "Duplicar parte"
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Editar parte"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr "Eliminar parte"
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
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:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr "La parte puede ser ensamblada desde otras partes"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr "La parte puede ser usada en ensamblajes"
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
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:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr "La parte puede ser comprada de proveedores externos"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr "La parte puede ser vendida a clientes"
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr "La parte es virtual (no una parte física)"
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr "Mostrar Detalles de Parte"
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
-msgstr ""
+msgstr "Asignado a órdenes de venta"
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr "Nivel mínimo de stock"
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr "Rango de precios"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr "Último número de serie"
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "Buscar número de serie"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr "Vincular código de barras a parte"
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr "Calcular"
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr "Eliminar imagen asociada de esta parte"
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr "No se encontraron imágenes coincidentes"
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr "Ocultar Detalles de la Parte"
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr "Variantes"
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Inventario"
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Editar"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr "Última actualización"
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr "Imagen de parte no encontrada"
msgid "Part Pricing"
msgstr "Precio de parte"
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ 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:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
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:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Coincidencia encontrada para datos de códigos de barras"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr "El código de barras coincide con artículo existente"
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr "Códigos de barras de InvenTree"
@@ -8756,7 +9028,7 @@ msgstr "URL de webhook entrante de Slack"
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:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr "Abrir enlace"
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr "Configuración del complemento"
msgid "Plugin Configurations"
msgstr "Configuraciones del Plug-in"
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr "Clave"
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr "Clave del complemento"
@@ -8955,7 +9223,7 @@ msgstr "Clave del complemento"
msgid "PluginName of the plugin"
msgstr "Nombre del complemento"
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr "Nombre de Paquete"
@@ -8984,17 +9252,17 @@ msgstr "Complemento integrado"
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr "Complemento"
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr "Método"
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr "No se encontró autor"
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr ""
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
msgid "Source URL"
msgstr "URL de origen"
-#: plugin/serializers.py:83
+#: plugin/serializers.py:108
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:92
+#: plugin/serializers.py:117
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:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr "Versión"
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr "Confirmar instalación del complemento"
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
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:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr "Instalación no confirmada"
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr "Debe proporcionar cualquier nombre de paquete de la URL"
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr "Activar complemento"
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr "Activar este complemento"
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr "No se han proporcionado objetos válidos a la plantilla"
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9157,7 +9501,7 @@ msgstr ""
#: report/api.py:233
msgid "Invalid label dimensions"
-msgstr ""
+msgstr "Dimensiones de etiqueta inválidas"
#: report/api.py:248 report/api.py:329
msgid "No valid items provided to template"
@@ -9165,24 +9509,28 @@ msgstr ""
#: report/api.py:283
msgid "Error printing label"
+msgstr "Error al imprimir la etiqueta"
+
+#: report/api.py:358
+msgid "Report saved at time of printing"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
#: report/helpers.py:43
msgid "A4"
-msgstr ""
+msgstr "A4"
#: report/helpers.py:44
msgid "A3"
-msgstr ""
+msgstr "A3"
#: report/helpers.py:45
msgid "Legal"
-msgstr ""
+msgstr "Legal"
#: report/helpers.py:46
msgid "Letter"
@@ -9204,137 +9552,145 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Patrón de Nombre de archivo"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Filtros"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr "Tamaño de página para reportes PDF"
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Ancho [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Ancho de la etiqueta, especificado en mm"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Altura [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Altura de la etiqueta, especificada en mm"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr "Progreso"
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr "Fragmento"
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr "Archivo fragmento de informe"
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr "Descripción de archivo de fragmento"
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr "Activo"
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr "Reportar archivo de activos"
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr "Descripción del archivo de activos"
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
-msgstr ""
-
-#: report/serializers.py:140
-msgid "Printing Plugin"
-msgstr ""
+msgstr "Selecciona la plantilla de etiqueta"
#: report/serializers.py:141
+msgid "Printing Plugin"
+msgstr "Complemento de impresión"
+
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
-msgstr ""
+msgstr "Selecciona el complemento a usar para imprimir etiquetas"
#: report/templates/label/part_label.html:31
#: report/templates/label/stockitem_qr.html:21
@@ -9365,9 +9721,9 @@ msgstr "El proveedor ha sido eliminado"
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr "Precio Unitario"
@@ -9379,12 +9735,17 @@ msgstr "Partida extra"
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
-msgstr ""
+msgstr "Total"
+
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr "Asignaciones"
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
@@ -9403,15 +9764,13 @@ msgstr "Resultados de la Prueba"
msgid "Test"
msgstr "Prueba"
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr "Resultado"
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr "Pasada"
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr "Fallo"
@@ -9420,19 +9779,20 @@ msgid "No result (required)"
msgstr "Ningún resultado (requerido)"
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr "Sin resultados"
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr "Elementos instalados"
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
-msgstr ""
+msgstr "Número de serie"
#: report/templatetags/report.py:98
msgid "Asset file does not exist"
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr "ID de Ubicación"
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr "Ruta de Ubicación"
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr "ID del artículo de almacén"
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr "Código de estado"
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr "ID Parte del Proveedor"
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr "ID de proveedor"
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr "ID de cliente"
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr "Instalado en"
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr "ID de construcción"
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr "ID de orden de venta"
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr "ID de orden de compra"
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr "Revisión necesaria"
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
-msgstr ""
+msgstr "Eliminar al agotarse"
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr "Fecha de Expiración"
@@ -9526,13 +9886,13 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
-msgstr ""
+msgstr "Ubicación principal"
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
-msgstr ""
+msgstr "Filtrar por ubicación principal"
#: stock/api.py:615 templates/js/translated/table_filters.js:434
msgid "External Location"
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr "Desactualizado"
@@ -9560,600 +9920,604 @@ msgstr "Desactualizado"
msgid "Quantity is required"
msgstr "Cantidad requerida"
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr "Debe suministrarse una parte válida"
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Ubicación de Stock"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Ubicaciones de Stock"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr "Propietario"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr "Seleccionar Propietario"
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr "Externo"
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
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:721
+#: stock/models.py:798
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:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr "El objeto no puede pertenecer a sí mismo"
-#: stock/models.py:748
+#: stock/models.py:825
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:761
+#: stock/models.py:838
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:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr "Artículo de stock padre"
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr "Parte base"
-#: stock/models.py:799
+#: stock/models.py:876
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:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr "¿Dónde se encuentra este artículo de stock?"
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr "Empaquetar este artículo de stock se almacena en"
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr "¿Está este artículo instalado en otro artículo?"
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr "Número de serie para este artículo"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr "Código de lote para este artículo de stock"
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr "Cantidad de Stock"
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr "Build de origen"
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr "Build para este item de stock"
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr "Consumido por"
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr "Orden de compra de origen"
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr "Orden de compra para este artículo de stock"
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr "Orden de venta de destino"
-#: stock/models.py:921
+#: stock/models.py:998
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:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr "Eliminar al agotar"
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr "Eliminar este artículo de stock cuando se agoten las existencias"
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr "Precio de compra único en el momento de la compra"
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr "Convertido a parte"
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr "La parte no está establecida como rastreable"
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr "Cantidad debe ser un entero"
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
-msgstr "Los números de serie deben ser una lista de enteros"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr "La cantidad no coincide con los números de serie"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "Números de serie ya existen"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
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:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr "Artículo de stock está instalado en otro artículo"
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr "Artículo de stock contiene otros artículos"
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr "Artículo de stock ha sido asignado a un cliente"
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr "El artículo de stock está en producción"
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr "Stock serializado no puede ser combinado"
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr "Artículos de Stock Duplicados"
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr "Los artículos de stock deben referirse a la misma parte"
-#: stock/models.py:1694
+#: stock/models.py:1800
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:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr "Los códigos de estado del stock deben coincidir"
-#: stock/models.py:1960
+#: stock/models.py:2066
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:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr "Notas de entrada"
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr "Debe proporcionarse un valor para esta prueba"
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr "El archivo adjunto debe ser subido para esta prueba"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr "Resultado de la prueba"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr "Valor de salida de prueba"
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr "Adjunto de resultados de prueba"
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr "Notas de prueba"
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
-msgstr ""
+msgstr "Finalizó"
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr "El número de serie es demasiado grande"
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr "Elemento padre"
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr "Expirado"
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr "Elementos secundarios"
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr "Introduzca el número de artículos de stock para serializar"
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, 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:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr "Introduzca números de serie para nuevos artículos"
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr "Ubicación de stock de destino"
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr "Campo de nota opcional"
-#: stock/serializers.py:709
+#: stock/serializers.py:736
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:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "Números de serie ya existen"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr "Añadir nota de transacción (opcional)"
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Sub-ubicación"
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr "La parte debe ser vendible"
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr "El artículo está asignado a una orden de venta"
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr "El artículo está asignado a una orden de creación"
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr "Cliente para asignar artículos de stock"
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr "La empresa seleccionada no es un cliente"
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr "Notas de asignación de stock"
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr "Debe proporcionarse una lista de artículos de stock"
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr "Notas de fusión de stock"
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr "Permitir proveedores no coincidentes"
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
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:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr "Permitir estado no coincidente"
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
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:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr "Debe proporcionar al menos dos artículos de stock"
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
-msgstr ""
+msgstr "Sin cambios"
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr "Valor de clave primaria de Stock"
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr "Notas de transacción de stock"
#: stock/status_codes.py:11
msgid "OK"
-msgstr ""
+msgstr "OK"
#: stock/status_codes.py:12
msgid "Attention needed"
@@ -10175,107 +10539,107 @@ msgstr "Rechazado"
msgid "Quarantined"
msgstr "En cuarentena"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Entrada antigua de rastreo de stock"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Artículo de stock creado"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Artículo de almacén editado"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Número de serie asignado"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Stock contado"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Stock añadido manualmente"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Stock eliminado manualmente"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Ubicación cambiada"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Existencia actualizada"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Instalado en el ensamblaje"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Retirado del ensamblaje"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Artículo del componente instalado"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Elemento de componente eliminado"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Separar del artículo principal"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Dividir artículo secundario"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Artículos de stock combinados"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Convertir a variante"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Trabajo de ensamblaje creado"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Construir orden de salida completado"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Orden de ensamble rechazada"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Consumido por orden de construcción"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Enviado contra orden de venta"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Recibido contra la orden de compra"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Devuelto contra orden de devolución"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Enviar al cliente"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Devolución del cliente"
@@ -10296,7 +10660,7 @@ msgstr "Este artículo de stock no tiene ningún artículo secundario"
msgid "Test Data"
msgstr "Datos de Prueba"
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr "Informe de Prueba"
@@ -10316,7 +10680,7 @@ msgstr "Notas del artículo de stock"
msgid "Installed Stock Items"
msgstr "Elementos de Stock instalados"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr "Instalar artículo de stock"
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr "Escanear a la ubicación"
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr "Acciones de impresión"
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr "Acciones de ajuste de stock"
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr "Contar stock"
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr "Añadir stock"
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr "Eliminar stock"
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr "Serializar stock"
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr "Transferir stock"
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr "Asignar a cliente"
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr "Regresar al stock"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr "Desinstalar artículo de stock"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr "Desinstalar"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr "Instalar artículo de stock"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr "Instalar"
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr "Convertir a variante"
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr "Duplicar artículo"
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr "Editar artículo de almacén"
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr "Eliminar artículo de stock"
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Construcción o Armado"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr "Ningún fabricante establecido"
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:252
-#: stock/templates/stock/location.html:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr "Solo lectura"
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
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:272
+#: stock/templates/stock/item_base.html:269
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:287
+#: stock/templates/stock/item_base.html:284
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:295
+#: stock/templates/stock/item_base.html:292
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:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "página anterior"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr "Navegar al número de serie anterior"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr "página siguiente"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr "Navegar al siguiente número de serie"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr "Ubicación no establecida"
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr "Pruebas"
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
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:437
+#: stock/templates/stock/item_base.html:434
#, 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:439
+#: stock/templates/stock/item_base.html:436
#, 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:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr "Ningún inventario realizado"
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
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:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr "Advertencia"
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr "Esta acción no se puede deshacer fácilmente"
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ 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:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr "Escanear en contenedor"
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr "Acciones de ubicación"
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr "Editar ubicación"
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr "Eliminar ubicación"
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr "Ubicación de stock superior"
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr "Propietario de la ubicación"
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
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:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr "Crear nueva ubicación de stock"
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr "Nueva Ubicación"
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr "Cargando..."
msgid "Stock Tracking"
msgstr "Seguimiento de Stock"
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr "Asignaciones"
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr "Permiso Denegado"
@@ -10742,11 +11106,11 @@ msgstr ""
#: templates/InvenTree/index.html:262
msgid "Outstanding Sales Orders"
-msgstr ""
+msgstr "Órdenes de venta destacadas"
#: templates/InvenTree/index.html:273
msgid "Overdue Sales Orders"
-msgstr ""
+msgstr "Órdenes de venta vencidas"
#: templates/InvenTree/index.html:299
msgid "InvenTree News"
@@ -10874,7 +11238,7 @@ msgstr "Abrir en una pestaña nueva"
#: templates/InvenTree/settings/notifications.html:9
#: templates/InvenTree/settings/user_notifications.html:9
msgid "Notification Settings"
-msgstr ""
+msgstr "Ajustes de notificaciones"
#: templates/InvenTree/settings/notifications.html:18
msgid "Slug"
@@ -10907,7 +11271,7 @@ msgstr ""
#: templates/InvenTree/settings/physical_units.html:8
#: templates/InvenTree/settings/sidebar.html:35
msgid "Physical Units"
-msgstr ""
+msgstr "Unidades físicas"
#: templates/InvenTree/settings/physical_units.html:12
msgid "Add Unit"
@@ -11104,35 +11468,35 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:49
msgid "Rate"
-msgstr ""
+msgstr "Tarifa"
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Eliminar"
#: templates/InvenTree/settings/settings_staff_js.html:95
msgid "Edit Custom Unit"
-msgstr ""
+msgstr "Editar unidad personalizada"
#: templates/InvenTree/settings/settings_staff_js.html:110
msgid "Delete Custom Unit"
-msgstr ""
+msgstr "Eliminar unidad personalizada"
#: templates/InvenTree/settings/settings_staff_js.html:124
msgid "New Custom Unit"
-msgstr ""
+msgstr "Nueva unidad personalizada"
#: templates/InvenTree/settings/settings_staff_js.html:140
msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
-msgstr ""
+msgstr "grupo"
#: templates/InvenTree/settings/settings_staff_js.html:175
#: templates/InvenTree/settings/settings_staff_js.html:189
@@ -11151,12 +11515,12 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:308
#: templates/js/translated/part.js:1652
msgid "Edit Template"
-msgstr ""
+msgstr "Editar plantilla"
#: templates/InvenTree/settings/settings_staff_js.html:309
#: templates/js/translated/part.js:1653
msgid "Delete Template"
-msgstr ""
+msgstr "Eliminar plantilla"
#: templates/InvenTree/settings/settings_staff_js.html:326
msgid "Edit Category Parameter Template"
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr "Configuración de orden de venta"
msgid "Stock Settings"
msgstr "Configuración de Stock"
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr "Sin verificar"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr "Principal"
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr "Enviar Informe de Error"
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr "copiar al portapapeles"
@@ -11712,7 +12076,7 @@ msgstr "Escanea el código QR de abajo con un generador de tokens de tu elecció
#: templates/allauth_2fa/setup.html:20
msgid "Secret: "
-msgstr ""
+msgstr "Secreto:"
#: templates/allauth_2fa/setup.html:24
msgid "Step 2"
@@ -11738,23 +12102,24 @@ msgstr "Añadir archivo adjunto"
msgid "Barcode Identifier"
msgstr "Identificador de Código de Barras"
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr "Reinicio del Servidor Requerido"
-#: templates/base.html:106
+#: templates/base.html:105
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:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr "Póngase en contacto con su administrador para más información"
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,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:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr "Cantidad requerida"
@@ -11801,17 +12166,17 @@ 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:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr "Cantidad Mínima"
#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1135
msgid "No Response"
-msgstr ""
+msgstr "Sin respuesta"
#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1136
msgid "No response from the InvenTree server"
-msgstr ""
+msgstr "Sin respuesta del servidor de InvenTree"
#: templates/js/translated/api.js:232
msgid "Error 400: Bad request"
@@ -11867,7 +12232,7 @@ msgstr ""
#: templates/js/translated/api.js:262
msgid "The server is currently unavailable"
-msgstr ""
+msgstr "El servidor no está disponible en estos momentos"
#: templates/js/translated/api.js:265
msgid "Unhandled Error Code"
@@ -11875,7 +12240,7 @@ msgstr ""
#: templates/js/translated/api.js:266
msgid "Error code"
-msgstr ""
+msgstr "Código de error"
#: templates/js/translated/attachment.js:114
msgid "All selected attachments will be deleted"
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr "Cerrar"
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
-msgstr ""
+msgstr "Artículo de inventario"
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr "Seleccionar"
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
-msgstr ""
+msgstr "Agregar proveedor"
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr "Eliminar Partes de Proveedor"
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr "Añadir nueva Empresa"
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr "Partes Suministradas"
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr "Partes Fabricadas"
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
-msgstr ""
+msgstr "No se encontró información de la empresa"
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr "Crear Nuevo Contacto"
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
-msgstr ""
+msgstr "Editar contacto"
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
-msgstr ""
+msgstr "Se eliminarán todos los contactos seleccionados"
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
-msgstr ""
+msgstr "Rol"
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
-msgstr ""
+msgstr "Borrar contactos"
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
-msgstr ""
+msgstr "No se encontraron contactos"
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
-msgstr ""
+msgstr "Número de teléfono"
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
-msgstr ""
+msgstr "Dirección de correo electrónico"
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr "Eliminar Contacto"
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr "Crear Nueva Dirección"
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr "Editar Dirección"
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr "Todos las direcciones seleccionadas serán eliminadas"
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr "Eliminar Direcciones"
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr "No se encontraron direcciones"
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr "Ciudad postal"
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr "Estado/provincia"
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr "Notas del mensajero"
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr "Notas internas"
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr "Eliminar Dirección"
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr "Se eliminarán todas las partes del fabricante seleccionadas"
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr "Eliminar Partes del Fabricante"
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr "Todos los parámetros seleccionados serán eliminados"
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr "Eliminar Parámetros"
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr "Ordenar Partes"
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr "Eliminar partes del fabricante"
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr "Acciones para partes del fabricante"
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr "No se encontraron partes del fabricante"
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr "Plantilla de parte"
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr "Parte ensamblada"
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr "No se encontraron parámetros"
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr "Editar parámetro"
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr "Eliminar parámetro"
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr "Editar Parámetro"
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr "Eliminar Parámetro"
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr "Eliminar piezas del proveedor"
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr "No se encontraron partes de proveedor"
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr "Unidades base"
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr "Disponibilidad"
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr "Editar parte del proveedor"
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr "Eliminar parte del proveedor"
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr "Última actualización"
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12946,7 +13311,7 @@ msgstr ""
#: templates/js/translated/forms.js:904
msgid "Enter a valid number"
-msgstr ""
+msgstr "Ingrese un número válido"
#: templates/js/translated/forms.js:1478 templates/modals.html:19
#: templates/modals.html:43
@@ -12955,11 +13320,11 @@ msgstr "Existen errores en el formulario"
#: templates/js/translated/forms.js:2008
msgid "No results found"
-msgstr ""
+msgstr "No se encontraron resultados"
#: templates/js/translated/forms.js:2318 templates/js/translated/search.js:239
msgid "Searching"
-msgstr ""
+msgstr "Buscando"
#: templates/js/translated/forms.js:2532
msgid "Clear input"
@@ -12975,21 +13340,21 @@ msgstr ""
#: templates/js/translated/forms.js:3146
msgid "Select Columns"
-msgstr ""
+msgstr "Seleccionar columnas"
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
-msgstr ""
+msgstr "Sí"
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
-msgstr ""
+msgstr "No"
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13012,7 +13377,7 @@ msgstr ""
#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:159
#: templates/js/translated/modals.js:688
msgid "Cancel"
-msgstr ""
+msgstr "Cancelar"
#: templates/js/translated/modals.js:64 templates/js/translated/modals.js:158
#: templates/js/translated/modals.js:756 templates/js/translated/modals.js:1064
@@ -13026,7 +13391,7 @@ msgstr ""
#: templates/js/translated/modals.js:446
msgid "Waiting for server..."
-msgstr ""
+msgstr "Esperando al servidor..."
#: templates/js/translated/modals.js:597
msgid "Show Error Information"
@@ -13034,15 +13399,15 @@ msgstr ""
#: templates/js/translated/modals.js:687
msgid "Accept"
-msgstr ""
+msgstr "Aceptar"
#: templates/js/translated/modals.js:745
msgid "Loading Data"
-msgstr ""
+msgstr "Cargando datos"
#: templates/js/translated/modals.js:1016
msgid "Invalid response from server"
-msgstr ""
+msgstr "Respuesta inválida del servidor"
#: templates/js/translated/modals.js:1016
msgid "Form data missing from server response"
@@ -13080,23 +13445,23 @@ msgstr ""
#: templates/js/translated/notification.js:52
msgid "Age"
-msgstr ""
+msgstr "Edad"
#: templates/js/translated/notification.js:65
msgid "Notification"
-msgstr ""
+msgstr "Notificación"
#: templates/js/translated/notification.js:224
msgid "Mark as unread"
-msgstr ""
+msgstr "Marcar como no leído"
#: templates/js/translated/notification.js:228
msgid "Mark as read"
-msgstr ""
+msgstr "Marcar como leído"
#: templates/js/translated/notification.js:254
msgid "No unread notifications"
-msgstr ""
+msgstr "Sin notificaciones no leídas"
#: templates/js/translated/notification.js:296 templates/notifications.html:12
msgid "Notifications will load here"
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr "Eliminar Línea"
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr "No se encontraron artículos de línea"
@@ -13303,7 +13668,7 @@ msgstr ""
#: templates/js/translated/part.js:774
msgid "Unit"
-msgstr ""
+msgstr "Unidad"
#: templates/js/translated/part.js:797 templates/js/translated/part.js:1213
msgid "Virtual part"
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr "Sin categoría"
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr "Mostrar como lista"
@@ -13431,7 +13796,7 @@ msgstr "Mostrar como cuadrícula"
msgid "No subcategories found"
msgstr "No se encontraron subcategorías"
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr "Mostrar como árbol"
@@ -13483,29 +13848,29 @@ msgstr "Fecha especificada es en el pasado"
msgid "Speculative"
msgstr "Especulativo"
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr "No hay información de planificación disponible para esta parte"
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr "Cantidad de Stock Programadas"
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr "Cantidad Máxima"
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
#: templates/js/translated/plugin.js:46
msgid "No plugins found"
-msgstr ""
+msgstr "No se encontraron complementos"
#: templates/js/translated/plugin.js:58
msgid "This plugin is no longer installed"
@@ -13513,11 +13878,11 @@ msgstr ""
#: templates/js/translated/plugin.js:60
msgid "This plugin is active"
-msgstr ""
+msgstr "Este complemento está activo"
#: templates/js/translated/plugin.js:62
msgid "This plugin is installed but not active"
-msgstr ""
+msgstr "Este complemento fue instalado pero no está activo"
#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186
msgid "Disable Plugin"
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
-msgstr ""
+msgstr "Combinar"
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
-msgstr ""
+msgstr "Agregar código de barras"
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
-msgstr ""
+msgstr "Eliminar código de barras"
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
-msgstr ""
+msgstr "Especificar ubicación"
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
-msgstr ""
+msgstr "Especificar embalaje"
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
-msgstr ""
+msgstr "Agregar números de serie"
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
-msgstr ""
+msgstr "Agregar nota"
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
-msgstr ""
+msgstr "Código de orden"
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,194 +14244,187 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
-msgstr ""
+msgstr "Omitor"
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
-msgstr ""
+msgstr "No se encontraron órdenes ventas"
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
-msgstr ""
+msgstr "Rastreo"
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
-msgstr ""
+msgstr "Factura"
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
-msgid "Update Unit Price"
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
msgstr ""
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr "Calcular precio"
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
+msgid "Update Unit Price"
+msgstr "Actualizar precio unitario"
+
#: templates/js/translated/search.js:270
msgid "No results"
-msgstr ""
+msgstr "Sin resultados"
#: templates/js/translated/search.js:292 templates/search.html:25
msgid "Enter search query"
@@ -14098,15 +14432,15 @@ msgstr "Ingresar consulta de búsqueda"
#: templates/js/translated/search.js:342
msgid "result"
-msgstr ""
+msgstr "resultado"
#: templates/js/translated/search.js:352
msgid "Minimize results"
-msgstr ""
+msgstr "Minimizar resultados"
#: templates/js/translated/search.js:355
msgid "Remove results"
-msgstr ""
+msgstr "Eliminar resultados"
#: templates/js/translated/stock.js:106
msgid "Serialize Stock Item"
@@ -14118,35 +14452,35 @@ msgstr ""
#: templates/js/translated/stock.js:173
msgid "Add Location type"
-msgstr ""
+msgstr "Agregar tipo de ubicación"
#: templates/js/translated/stock.js:209
msgid "Edit Stock Location"
-msgstr ""
+msgstr "Editar bodega de inventario"
#: templates/js/translated/stock.js:224
msgid "New Stock Location"
-msgstr ""
+msgstr "Nueva bodega de inventario"
#: templates/js/translated/stock.js:226
msgid "Create another location after this one"
-msgstr ""
+msgstr "Crear otra ubicación después de esta"
#: templates/js/translated/stock.js:227
msgid "Stock location created"
-msgstr ""
+msgstr "Se creó la bodega de inventario"
#: templates/js/translated/stock.js:241
msgid "Are you sure you want to delete this stock location?"
-msgstr ""
+msgstr "¿Está seguro de eliminar esta bodega de inventario?"
#: templates/js/translated/stock.js:248
msgid "Move to parent stock location"
-msgstr ""
+msgstr "Mover a la bodega de inventario principal"
#: templates/js/translated/stock.js:257
msgid "Delete Stock Location"
-msgstr ""
+msgstr "Eliminar bodega de inventario"
#: templates/js/translated/stock.js:261
msgid "Action for stock items in this stock location"
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr "Añadir"
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14374,7 +14693,7 @@ msgstr ""
#: templates/js/translated/stock.js:1853
msgid "In production"
-msgstr ""
+msgstr "En producción"
#: templates/js/translated/stock.js:1857
msgid "Installed in Stock Item"
@@ -14388,218 +14707,218 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
-msgstr ""
+msgstr "Combinar inventario"
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
-msgstr ""
+msgstr "Eliminar inventario"
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
-msgstr ""
+msgstr "Artículos de inventario"
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
-msgstr ""
+msgstr "Acciones de inventario"
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
-msgstr ""
+msgstr "Agotado"
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
-msgstr ""
+msgstr "Detalles"
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
-msgstr ""
+msgstr "Sin cambios"
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
-msgstr ""
+msgstr "Información del producto no disponible"
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
-msgstr ""
+msgstr "La ubicación ya no existe"
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
-msgstr ""
+msgstr "La orden de fabricación ya no existe"
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
-msgstr ""
+msgstr "La orden de compra ya no existe"
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
-msgstr ""
+msgstr "La orden de venta ya no existe"
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
-msgstr ""
+msgstr "La orden de devolución ya no existe"
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
-msgstr ""
+msgstr "El cliente ya no existe"
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
-msgstr ""
+msgstr "El artículo de inventario ya no existe"
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
-msgstr ""
+msgstr "Agregado"
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
-msgstr ""
+msgstr "Eliminado"
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
-msgstr ""
+msgstr "Esta semana"
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
-msgstr ""
+msgstr "Este mes"
#: templates/js/translated/table_filters.js:73
msgid "Has project code"
@@ -14610,7 +14929,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:620
#: templates/js/translated/table_filters.js:661
msgid "Order status"
-msgstr ""
+msgstr "Estado del pedido"
#: templates/js/translated/table_filters.js:161
msgid "Testable Part"
@@ -14654,7 +14973,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:294
#: templates/js/translated/table_filters.js:767
msgid "Subscribed"
-msgstr ""
+msgstr "Suscrito"
#: templates/js/translated/table_filters.js:305
#: templates/js/translated/table_filters.js:387
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -14842,7 +15157,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:751
msgid "In stock"
-msgstr ""
+msgstr "En inventario"
#: templates/js/translated/table_filters.js:759
msgid "Purchasable"
@@ -15012,10 +15327,6 @@ msgstr "Error al iniciar sesión en la cuenta"
msgid "An error occurred while attempting to login via your social network account."
msgstr "Se ha producido un error al intentar iniciar sesión a través de su cuenta de red social."
-#: templates/socialaccount/authentication_error.html:13
-msgid "Contact your system administrator for further information."
-msgstr "Póngase en contacto con su administrador para más información."
-
#: templates/socialaccount/login.html:13
#, python-format
msgid "Connect %(provider)s"
@@ -15141,27 +15452,27 @@ msgstr "Sí"
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Usuarios"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr "Seleccione qué usuarios están asignados a este grupo"
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Información personal"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Permisos"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr "Fechas importantes"
@@ -15175,65 +15486,65 @@ msgstr ""
#: users/models.py:81
msgid "API Token"
-msgstr ""
+msgstr "Token del API"
#: users/models.py:82
msgid "API Tokens"
-msgstr ""
+msgstr "Tokens del API"
#: users/models.py:118
msgid "Token Name"
-msgstr ""
+msgstr "Nombre del token"
#: users/models.py:119
msgid "Custom token name"
-msgstr ""
+msgstr "Nombre personalizado del token"
#: users/models.py:125
msgid "Token expiry date"
-msgstr ""
+msgstr "Fecha de expiración del token"
#: users/models.py:133
msgid "Last Seen"
-msgstr ""
+msgstr "Última conexión"
#: users/models.py:134
msgid "Last time the token was used"
-msgstr ""
+msgstr "Última vez que se usó el token"
#: users/models.py:138
msgid "Revoked"
-msgstr ""
+msgstr "Revocado"
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "Permiso establecido"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Grupo"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Vista"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Permiso para ver artículos"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Permiso para añadir artículos"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Cambiar"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Permisos para editar artículos"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Permiso para eliminar artículos"
diff --git a/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po
index c9947d6869..91ea7017e1 100644
--- a/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/es_MX/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Spanish, Mexico\n"
"Language: es_MX\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: es-MX\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "Endpoint de API no encontrado"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "El usuario no tiene permiso para ver este modelo"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Unidad proporcionada no válida ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Ningún valor proporcionado"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "No se pudo convertir {original} a {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "La cantidad suministrada es inválida"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Cantidad proporcionada no válida"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "La cantidad suministrada es inválida ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
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:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Ingrese la fecha"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Notas"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, 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:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "El valor proporcionado no coincide con el patrón requerido: "
@@ -132,397 +140,409 @@ msgstr "El registro ha sido desactivado."
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:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "El dominio de correo electrónico proporcionado no está aprobado."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "El registro ha sido desactivado."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Cantidad proporcionada no válida"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "No se ha proporcionado un número de serie"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Número de serie duplicado"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Rango de grupo inválido: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "El rango del grupo {group} supera la cantidad permitida ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Secuencia de grupo inválida: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "No se encontraron números de serie"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Los números de serie únicos ({len(serials)}) deben coincidir con la cantidad ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Elimine etiquetas HTML de este valor"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Error de conexión"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "El servidor respondió con un código de estado no válido"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Se ha producido una excepción"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
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:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "El tamaño de la imagen es demasiado grande"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "La imagen descargada exedió el tamaño máximo"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "El servidor remoto devolvió una respuesta vacía"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "La URL proporcionada no es un archivo de imagen válido"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Árabe"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Búlgaro"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Checo"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Danés"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Alemán"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Griego"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Inglés"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Español"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Español (México)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Estonia"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persa"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finlandés"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Francés"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebreo"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hindi"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Húngaro"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japonés"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Letón"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Holandés"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Noruego"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polaco"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugués"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugués (Brasileño)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Rumano"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Ruso"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Eslovaco"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Esloveno"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbio"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Sueco"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Tailandés"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ucraniano"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Chino (Simplificado)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Chino (Tradicional)"
#: 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"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Correo electrónico"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Error al ejecutar la validación del plugin"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Los metadatos deben ser un objeto diccionario de python"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Metadatos del complemento"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "Campo de metadatos JSON, para uso por complementos externos"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Patrón con formato incorrecto"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Clave de formato especificado desconocida"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Falta la clave de formato necesaria"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "El campo de servidor no puede estar vacío"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "La referencia debe coincidir con el patrón requerido"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "El número de referencia es demasiado grande"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Los nombres duplicados no pueden existir bajo el mismo padre"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Selección no válida"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Nombre"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Descripción"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Descripción (opcional)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Ruta"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Notas (opcional)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Datos de código de barras"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Datos de código de barras de terceros"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Hash del Código de barras"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Hash único de datos de código de barras"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Código de barras existente encontrado"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Error de servidor"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Se ha registrado un error por el servidor."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Debe ser un número válido"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Moneda"
msgid "Select currency from available options"
msgstr "Seleccionar moneda de las opciones disponibles"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Nombre de usuario"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Nombre"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "Nombre de usuario"
@@ -552,30 +572,30 @@ msgstr "Apellido"
msgid "Last name of the user"
msgstr "Apellido del usuario"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "Dirección de email del usuario"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Personal"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr "Tiene permisos de personal este usuario"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Superusuario"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr "Este usuario es un superusuario"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr "Este usuario es un superusuario"
msgid "Active"
msgstr "Activo"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Esta cuenta de usuario está activa"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "No tiene permiso para cambiar este cargo de usuario."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Solo los superusuarios pueden crear nuevos usuarios"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Su cuenta ha sido creada."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Por favor, utilice la función de restablecer la contraseña para iniciar sesión"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Bienvenido a InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Valor inválido"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Archivo de datos"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Seleccione el archivo para subir"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Tipo de archivo no soportado"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "El archivo es demasiado grande"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "No hay columnas en el archivo"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "No hay filas de datos en el archivo"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "No se proporcionaron filas de datos"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "No hay columnas de datos para suministrar"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Falta la columna requerida: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Columna duplicada: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Imagen remota"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL de imagen remota"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "La descarga de imágenes desde la URL remota no está habilitada"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po
index 37bc37dc00..49bfca6a8a 100644
--- a/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/et/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"Language: et_EE\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: et\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Teil ei ole selle lehe vaatamiseks luba"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
-msgstr ""
+msgstr "Ei tohi tühi olla"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr ""
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
-msgstr ""
+msgstr "Pane kuupäev"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Märkmed"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr ""
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr ""
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr ""
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registreerimine on ajutiselt väljalülitatud."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Ühenduse viga"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Esines tõrge"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr ""
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Araabia"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgaaria keel"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Tšehhi"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Taani"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Saksa keel"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Kreeka keel"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Inglise keel"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Hispaania keel"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Eesti"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
-msgid "Finnish"
-msgstr ""
-
-#: InvenTree/locales.py:30
-msgid "French"
-msgstr ""
-
#: InvenTree/locales.py:31
-msgid "Hebrew"
-msgstr ""
+msgid "Finnish"
+msgstr "Soome"
#: InvenTree/locales.py:32
-msgid "Hindi"
-msgstr ""
+msgid "French"
+msgstr "Prantsuse"
#: InvenTree/locales.py:33
-msgid "Hungarian"
-msgstr ""
+msgid "Hebrew"
+msgstr "Heebrea"
#: InvenTree/locales.py:34
-msgid "Italian"
-msgstr ""
+msgid "Hindi"
+msgstr "Hindi"
#: InvenTree/locales.py:35
-msgid "Japanese"
-msgstr ""
+msgid "Hungarian"
+msgstr "Ungari"
#: InvenTree/locales.py:36
-msgid "Korean"
-msgstr ""
+msgid "Italian"
+msgstr "Itaalia"
#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
+msgid "Japanese"
+msgstr "Jaapani"
#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
+msgid "Korean"
+msgstr "Korea"
#: InvenTree/locales.py:39
-msgid "Norwegian"
-msgstr ""
+msgid "Lithuanian"
+msgstr "Lietuvių"
#: InvenTree/locales.py:40
-msgid "Polish"
-msgstr ""
+msgid "Latvian"
+msgstr "Läti"
#: InvenTree/locales.py:41
-msgid "Portuguese"
-msgstr ""
+msgid "Dutch"
+msgstr "Hollandi"
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
-msgstr ""
+msgid "Norwegian"
+msgstr "Norra"
#: InvenTree/locales.py:43
-msgid "Romanian"
-msgstr ""
+msgid "Polish"
+msgstr "Poola"
#: InvenTree/locales.py:44
-msgid "Russian"
-msgstr ""
+msgid "Portuguese"
+msgstr "Portugali"
#: InvenTree/locales.py:45
-msgid "Slovak"
-msgstr ""
+msgid "Portuguese (Brazilian)"
+msgstr "Portugali (Brasiilia)"
#: InvenTree/locales.py:46
-msgid "Slovenian"
-msgstr ""
+msgid "Romanian"
+msgstr "Rumeenia"
#: InvenTree/locales.py:47
-msgid "Serbian"
-msgstr ""
+msgid "Russian"
+msgstr "Vene"
#: InvenTree/locales.py:48
-msgid "Swedish"
-msgstr ""
+msgid "Slovak"
+msgstr "Slovaki"
#: InvenTree/locales.py:49
+msgid "Slovenian"
+msgstr "Sloveenia"
+
+#: InvenTree/locales.py:50
+msgid "Serbian"
+msgstr "Serbia"
+
+#: InvenTree/locales.py:51
+msgid "Swedish"
+msgstr "Rootsi"
+
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Tai keel"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Türgi keel"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ukraina keel"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
-msgstr ""
+msgstr "Vietnami"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
-msgstr ""
+msgstr "Hiina (lihtsustatud)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
-msgstr ""
+msgstr "Hiina (traditsiooniline)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
-msgstr ""
+msgstr "E-post"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
-msgstr ""
+msgstr "Nimi"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
-msgstr ""
+msgstr "Kirjeldus"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
-msgstr ""
+msgstr "Kirjeldus (valikuline)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
-msgstr ""
+msgstr "Tee"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
-msgid "Server Error"
+#: InvenTree/models.py:1112
+msgid "Task Failure"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
+msgid "Server Error"
+msgstr "Serveri viga"
+
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Valuuta"
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
-msgstr ""
+msgstr "Kasutajanimi"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Eesnimi"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr "Perekonnanimi"
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,247 +605,298 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
-msgstr ""
+msgstr "Fail on liiga suur"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Tundmatu andmebaas"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
-msgstr ""
+msgstr "Muuda kasutaja infot"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Määra parool"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Esitatud vale parool"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
-msgstr ""
+msgstr "Süsteemi info"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
-msgstr ""
+msgstr "InvenTree kohta"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
-msgstr ""
+msgstr "Määratud"
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
-msgstr ""
+msgstr "Valikuline"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
-msgstr ""
+msgstr "Jälgitud"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
#: templates/js/translated/table_filters.js:578
msgid "Available"
-msgstr ""
+msgstr "Saadaval"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Osa"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Tootekood"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
-msgstr ""
+msgstr "Koostamise olek"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
-msgstr ""
+msgstr "Loomise kuupäev"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,633 +1129,642 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
-msgstr ""
+msgstr "Kogus"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
-msgstr ""
+msgstr "Asukoht"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
-msgstr ""
+msgstr "Tühista kõik laoseisu eraldised mahakantud väljundite jaoks"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
-msgstr ""
+msgstr "Staatus"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
-msgstr ""
+msgstr "Valikained"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr "Tarnija osa number"
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
-msgstr ""
+msgstr "Asukoha Nimi"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "Osa ID"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Seerianumber"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
-msgstr ""
+msgstr "Saadaolev kogus"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
-msgstr ""
+msgstr "Jälgitav"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Saadaval laos"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Ootel"
#: build/status_codes.py:12
msgid "Production"
-msgstr ""
+msgstr "Tootmine"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Katkestatud"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Valmis"
@@ -1744,165 +1772,162 @@ msgstr "Valmis"
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Loodud"
@@ -2005,8 +2033,8 @@ msgstr "Loodud"
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2098,7 +2126,7 @@ msgstr ""
#: part/templates/part/part_sidebar.html:63 stock/templates/stock/item.html:110
#: stock/templates/stock/stock_sidebar.html:23
msgid "Attachments"
-msgstr ""
+msgstr "Manused"
#: build/templates/build/detail.html:303
msgid "Build Notes"
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
-msgstr ""
+msgstr "On link"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
-msgstr ""
+msgstr "On fail"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Grupp puudub"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Taaskäivitamine on vajalik"
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
-msgstr ""
+msgstr "Ettevõtte nimi"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automaatne varundus"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Vöötkoodi tugi"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr "Luba liidese integreerimine"
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr "Luba pluginatel integreeruda kasutajaliidesesse"
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
-msgstr ""
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr "Loo uus testimall testandmete üleslaadimisel, mis ei vasta olemasolevale mallile"
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr "Silt"
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr "Tellimuse ID"
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr "Kopeeritava tellimuse ID"
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr "Kopeeri read"
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr "Kopeeri reaüksused algsest tellimusest"
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr "Kopeeri lisareaüksused algsest tellimusest"
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr "Määrake selle tellimuse dubleerimise valikud"
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr "Vale tellimuse ID"
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
-msgstr ""
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr "Järgmised seerianumbrid ei ole saadaval"
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
-msgstr ""
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
+msgstr "Testimalle saab luua ainult testitavate osade jaoks"
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr "Plugina nimi"
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr "Luba kohandatud paneelid osade vaadete jaoks"
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr "Luba ostutellimuse paneelid"
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr "Luba kohandatud paneelid ostutellimuse vaadete jaoks"
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr "Luba katki olevad paneelid testimiseks"
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr "Luba dünaamilised paneelid testimiseks"
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,18 +9511,22 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr "Aruanne salvestati printimise ajal"
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
#: report/helpers.py:43
msgid "A4"
-msgstr ""
+msgstr "A4"
#: report/helpers.py:44
msgid "A3"
-msgstr ""
+msgstr "A3"
#: report/helpers.py:45
msgid "Legal"
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr "Lisa mudelile printimisel"
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr "Salvesta aruande väljund manusega seotud mudeli eksemplari juurde printimisel"
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
-msgstr ""
+msgstr "Filtrid"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,722 +9920,726 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
-msgstr ""
+msgstr "Testitulemused"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
#: stock/status_codes.py:11
msgid "OK"
-msgstr ""
+msgstr "OK"
#: stock/status_codes.py:12
msgid "Attention needed"
-msgstr ""
+msgstr "Vajab tähelepanu"
#: stock/status_codes.py:13
msgid "Damaged"
-msgstr ""
+msgstr "Kahjustatud"
#: stock/status_codes.py:14
msgid "Destroyed"
-msgstr ""
+msgstr "Hävinud"
#: stock/status_codes.py:15
msgid "Rejected"
-msgstr ""
+msgstr "Tagasi lükatud"
#: stock/status_codes.py:19
msgid "Quarantined"
-msgstr ""
+msgstr "Karantiinis"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
-msgstr ""
+msgstr "Eemalda"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
-msgstr ""
+msgstr "Paigalda"
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -10954,11 +11318,11 @@ msgstr ""
#: templates/InvenTree/settings/plugin.html:84
#: templates/js/translated/notification.js:76
msgid "Message"
-msgstr ""
+msgstr "Sõnum"
#: templates/InvenTree/settings/plugin_settings.html:16
msgid "Plugin information"
-msgstr ""
+msgstr "Plugina info"
#: templates/InvenTree/settings/plugin_settings.html:47
msgid "no version information supplied"
@@ -10966,37 +11330,37 @@ msgstr ""
#: templates/InvenTree/settings/plugin_settings.html:61
msgid "License"
-msgstr ""
+msgstr "Litsents"
#: 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 "Koodi teave on võetud selle plugina viimasest git-kommitist. See ei pruugi kajastada ametlikke versiooninumbreid või teavet, vaid näitab tegelikult töötavat koodi."
#: templates/InvenTree/settings/plugin_settings.html:76
msgid "Package information"
-msgstr ""
+msgstr "Paketi info"
#: templates/InvenTree/settings/plugin_settings.html:82
msgid "Installation method"
-msgstr ""
+msgstr "Paigaldamise viis"
#: templates/InvenTree/settings/plugin_settings.html:85
msgid "This plugin was installed as a package"
-msgstr ""
+msgstr "See plugin paigaldati paketina"
#: templates/InvenTree/settings/plugin_settings.html:87
msgid "This plugin was found in a local server path"
-msgstr ""
+msgstr "See plugin leiti kohaliku serveri kaustast"
#: templates/InvenTree/settings/plugin_settings.html:93
msgid "Installation path"
-msgstr ""
+msgstr "Paigaldamisfailide kaust"
#: templates/InvenTree/settings/plugin_settings.html:100
#: templates/js/translated/plugin.js:68
#: templates/js/translated/table_filters.js:517
msgid "Builtin"
-msgstr ""
+msgstr "Sisseehitatud"
#: templates/InvenTree/settings/plugin_settings.html:101
msgid "This is a builtin plugin which cannot be disabled"
@@ -11006,11 +11370,11 @@ msgstr ""
#: templates/js/translated/plugin.js:72
#: templates/js/translated/table_filters.js:521
msgid "Sample"
-msgstr ""
+msgstr "Näidis"
#: templates/InvenTree/settings/plugin_settings.html:108
msgid "This is a sample plugin"
-msgstr ""
+msgstr "See on näidis plugin"
#: templates/InvenTree/settings/plugin_settings.html:113
msgid "Commit Author"
@@ -11036,7 +11400,7 @@ msgstr ""
#: templates/InvenTree/settings/pricing.html:7
msgid "Pricing Settings"
-msgstr ""
+msgstr "Hinna seaded"
#: templates/InvenTree/settings/pricing.html:35
msgid "Exchange Rates"
@@ -11044,30 +11408,30 @@ msgstr ""
#: templates/InvenTree/settings/pricing.html:39
msgid "Update Now"
-msgstr ""
+msgstr "Uuenda kohe"
#: templates/InvenTree/settings/pricing.html:47
#: templates/InvenTree/settings/pricing.html:51
msgid "Last Update"
-msgstr ""
+msgstr "Viimane uuendus"
#: templates/InvenTree/settings/pricing.html:51
msgid "Never"
-msgstr ""
+msgstr "Mitte kunagi"
#: templates/InvenTree/settings/project_codes.html:8
msgid "Project Code Settings"
-msgstr ""
+msgstr "Projekti koodi seaded"
#: templates/InvenTree/settings/project_codes.html:21
#: templates/InvenTree/settings/sidebar.html:33
msgid "Project Codes"
-msgstr ""
+msgstr "Projekti koodid"
#: templates/InvenTree/settings/project_codes.html:25
#: templates/InvenTree/settings/settings_staff_js.html:216
msgid "New Project Code"
-msgstr ""
+msgstr "Uus projekti kood"
#: templates/InvenTree/settings/report.html:8
#: templates/InvenTree/settings/user_reporting.html:9
@@ -11107,11 +11471,11 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
-msgstr ""
+msgstr "Kustuta"
#: templates/InvenTree/settings/settings_staff_js.html:95
msgid "Edit Custom Unit"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,117 +11560,117 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
#: templates/InvenTree/settings/sidebar.html:6
#: templates/InvenTree/settings/user_settings.html:9
msgid "User Settings"
-msgstr ""
+msgstr "Kasutaja seaded"
#: templates/InvenTree/settings/sidebar.html:9
msgid "Account"
-msgstr ""
+msgstr "Konto"
#: templates/InvenTree/settings/sidebar.html:11
msgid "Display"
-msgstr ""
+msgstr "Kuva"
#: templates/InvenTree/settings/sidebar.html:13
msgid "Home Page"
-msgstr ""
+msgstr "Avaleht"
#: templates/InvenTree/settings/sidebar.html:15
#: templates/js/translated/forms.js:2200 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 "Otsi"
#: templates/InvenTree/settings/sidebar.html:19
#: templates/InvenTree/settings/sidebar.html:43
msgid "Reporting"
-msgstr ""
+msgstr "Aruandlus"
#: templates/InvenTree/settings/sidebar.html:24
msgid "Global Settings"
-msgstr ""
+msgstr "Üldised seaded"
#: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9
msgid "Server"
-msgstr ""
+msgstr "Server"
#: templates/InvenTree/settings/sidebar.html:41
msgid "Labels"
-msgstr ""
+msgstr "Sildid"
#: templates/InvenTree/settings/sidebar.html:45
msgid "Categories"
-msgstr ""
+msgstr "Kategooriad"
#: templates/InvenTree/settings/so.html:7
msgid "Sales Order Settings"
-msgstr ""
+msgstr "Müügi tellimuste seaded"
#: templates/InvenTree/settings/stock.html:7
msgid "Stock Settings"
-msgstr ""
+msgstr "Laoseisu seaded"
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
#: templates/InvenTree/settings/user.html:13
msgid "Account Settings"
-msgstr ""
+msgstr "Konto seaded"
#: templates/InvenTree/settings/user.html:19
#: templates/account/password_reset_from_key.html:4
#: templates/account/password_reset_from_key.html:7
msgid "Change Password"
-msgstr ""
+msgstr "Muuda parooli"
#: templates/InvenTree/settings/user.html:55
msgid "The following email addresses are associated with your account:"
-msgstr ""
+msgstr "Teie kontoga on seotud järgmised e-posti aadressid:"
#: templates/InvenTree/settings/user.html:76
msgid "Verified"
-msgstr ""
+msgstr "Kinnitatud"
#: templates/InvenTree/settings/user.html:78
msgid "Unverified"
-msgstr ""
+msgstr "Kinnitamata"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
-msgstr ""
+msgstr "Peamine"
#: templates/InvenTree/settings/user.html:86
msgid "Make Primary"
-msgstr ""
+msgstr "Määra peamiseks"
#: templates/InvenTree/settings/user.html:87
msgid "Re-send Verification"
-msgstr ""
+msgstr "Saada kinnitus uuesti"
#: templates/InvenTree/settings/user.html:96
msgid "Warning:"
-msgstr ""
+msgstr "Hoiatud:"
#: 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 "Teil ei ole praegu ühtegi e-posti aadressi seadistatud. Peaksite tõesti lisama e-posti aadressi, et saaksite teavitusi, lähtestada parooli jne."
#: templates/InvenTree/settings/user.html:105
msgid "Add Email Address"
-msgstr ""
+msgstr "Lisa e-posti aadress"
#: templates/InvenTree/settings/user.html:110
msgid "Add Email"
-msgstr ""
+msgstr "Lisa e-mail"
#: templates/InvenTree/settings/user.html:120
msgid "Multifactor"
@@ -11322,7 +11686,7 @@ msgstr ""
#: templates/InvenTree/settings/user.html:141
msgid "Static"
-msgstr ""
+msgstr "Staatiline"
#: templates/InvenTree/settings/user.html:150
msgid "Multifactor authentication is not configured for your account"
@@ -11362,66 +11726,66 @@ msgstr ""
#: templates/InvenTree/settings/user.html:192
msgid "IP Address"
-msgstr ""
+msgstr "IP aadress"
#: templates/InvenTree/settings/user.html:193
msgid "Device"
-msgstr ""
+msgstr "Seade"
#: templates/InvenTree/settings/user.html:194
msgid "Last Activity"
-msgstr ""
+msgstr "Viimane tegevus"
#: templates/InvenTree/settings/user.html:207
#, python-format
msgid "%(time)s ago (this session)"
-msgstr ""
+msgstr "%(time)s tagasi (see sessioon)"
#: templates/InvenTree/settings/user.html:209
#, python-format
msgid "%(time)s ago"
-msgstr ""
+msgstr "%(time)s tagasi"
#: templates/InvenTree/settings/user.html:223
msgid "Do you really want to remove the selected email address?"
-msgstr ""
+msgstr "Oas oled kindel, et soovid eemaldada valitud e-posti aadressid?"
#: templates/InvenTree/settings/user_display.html:9
msgid "Display Settings"
-msgstr ""
+msgstr "Vaate seaded"
#: templates/InvenTree/settings/user_display.html:29
msgid "Theme Settings"
-msgstr ""
+msgstr "Teema seaded"
#: templates/InvenTree/settings/user_display.html:39
msgid "Select theme"
-msgstr ""
+msgstr "Vali teema"
#: templates/InvenTree/settings/user_display.html:50
msgid "Set Theme"
-msgstr ""
+msgstr "Määra teema"
#: templates/InvenTree/settings/user_display.html:58
msgid "Language Settings"
-msgstr ""
+msgstr "Keeleseaded"
#: templates/InvenTree/settings/user_display.html:67
msgid "Select language"
-msgstr ""
+msgstr "Vali keel"
#: templates/InvenTree/settings/user_display.html:83
#, python-format
msgid "%(lang_translated)s%% translated"
-msgstr ""
+msgstr "%(lang_translated)s%% tõlgitud"
#: templates/InvenTree/settings/user_display.html:85
msgid "No translations available"
-msgstr ""
+msgstr "Ühtegi tõlget pole saadaval"
#: templates/InvenTree/settings/user_display.html:92
msgid "Set Language"
-msgstr ""
+msgstr "Määra keel"
#: templates/InvenTree/settings/user_display.html:95
msgid "Some languages are not complete"
@@ -11481,19 +11845,19 @@ msgstr ""
#: templates/about.html:9
msgid "InvenTree Version"
-msgstr ""
+msgstr "InvenTree versioon"
#: templates/about.html:14
msgid "Development Version"
-msgstr ""
+msgstr "Arendusversioon"
#: templates/about.html:17
msgid "Up to Date"
-msgstr ""
+msgstr "Ajakohane"
#: templates/about.html:19
msgid "Update Available"
-msgstr ""
+msgstr "Uuendus on saadaval"
#: templates/about.html:43
msgid "Commit Branch"
@@ -11505,44 +11869,44 @@ msgstr ""
#: templates/about.html:54
msgid "API Version"
-msgstr ""
+msgstr "API versioon"
#: templates/about.html:59
msgid "Python Version"
-msgstr ""
+msgstr "Pythoni versioon"
#: templates/about.html:64
msgid "Django Version"
-msgstr ""
+msgstr "Django versioon"
#: templates/about.html:69
msgid "View Code on GitHub"
-msgstr ""
+msgstr "Vaadata koodi GitHubis"
#: templates/about.html:74
msgid "Credits"
-msgstr ""
+msgstr "Autorid"
#: templates/about.html:79
msgid "Mobile App"
-msgstr ""
+msgstr "Mobiilirakendus"
#: templates/about.html:84
msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
-msgstr ""
+msgstr "kopeeri lõikelauale"
#: templates/about.html:91
msgid "copy version information"
-msgstr ""
+msgstr "kopeeri versiooniteave"
#: templates/account/base.html:66 templates/navbar.html:17
msgid "InvenTree logo"
-msgstr ""
+msgstr "InvenTree logo"
#: templates/account/email_confirm.html:6
#: templates/account/email_confirm.html:9
@@ -11556,7 +11920,7 @@ msgstr ""
#: templates/account/email_confirm.html:21 templates/js/translated/forms.js:775
msgid "Confirm"
-msgstr ""
+msgstr "Kinnita"
#: templates/account/email_confirm.html:29
#, python-format
@@ -11566,44 +11930,44 @@ msgstr ""
#: templates/account/login.html:6 templates/account/login.html:19
#: templates/account/login.html:40 templates/socialaccount/login.html:5
msgid "Sign In"
-msgstr ""
+msgstr "Logi sisse"
#: templates/account/login.html:23
msgid "Not a member?"
-msgstr ""
+msgstr "Pole liige?"
#: templates/account/login.html:25 templates/account/signup.html:11
#: templates/account/signup.html:22 templates/socialaccount/signup.html:8
#: templates/socialaccount/signup.html:23
msgid "Sign Up"
-msgstr ""
+msgstr "Liitu"
#: templates/account/login.html:47
msgid "Forgot Password?"
-msgstr ""
+msgstr "Unustasid parooli?"
#: templates/account/login.html:55
msgid "or log in with"
-msgstr ""
+msgstr "või logi sisse kasutades"
#: templates/account/logout.html:5 templates/account/logout.html:8
#: templates/account/logout.html:20
msgid "Sign Out"
-msgstr ""
+msgstr "Logi välja"
#: templates/account/logout.html:10
msgid "Are you sure you want to sign out?"
-msgstr ""
+msgstr "Kas oled kindel, et soovid välja logida?"
#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35
#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45
msgid "Return to Site"
-msgstr ""
+msgstr "Tagasi saidile"
#: templates/account/password_reset.html:5
#: templates/account/password_reset.html:12
msgid "Password Reset"
-msgstr ""
+msgstr "Parooli taastamine"
#: 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."
@@ -11624,7 +11988,7 @@ 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 ""
+msgstr "Parooli lähtestamise link oli kehtetu, tõenäoliselt seetõttu, et seda on juba kasutatud. Palun taotlege uus parooli lähtestamine ."
#: templates/account/password_reset_from_key.html:18
msgid "Change password"
@@ -11692,7 +12056,7 @@ msgstr ""
#: templates/allauth_2fa/remove.html:9
msgid "Are you sure?"
-msgstr ""
+msgstr "Olete sa kindel?"
#: templates/allauth_2fa/remove.html:17
msgid "Disable 2FA"
@@ -11704,7 +12068,7 @@ msgstr ""
#: templates/allauth_2fa/setup.html:10
msgid "Step 1"
-msgstr ""
+msgstr "Samm 1"
#: templates/allauth_2fa/setup.html:14
msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
@@ -11716,7 +12080,7 @@ msgstr ""
#: templates/allauth_2fa/setup.html:24
msgid "Step 2"
-msgstr ""
+msgstr "Samm 2"
#: templates/allauth_2fa/setup.html:28
msgid "Input a token generated by the app:"
@@ -11724,37 +12088,38 @@ msgstr ""
#: templates/allauth_2fa/setup.html:38
msgid "Verify"
-msgstr ""
+msgstr "Kinnita"
#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70
msgid "Add Link"
-msgstr ""
+msgstr "Lisa link"
#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48
msgid "Add Attachment"
-msgstr ""
+msgstr "Lisa manus"
#: templates/barcode_data.html:5
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,9 +12152,9 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
-msgstr ""
+msgstr "Nõutud kogus"
#: templates/email/build_order_required_stock.html:38
#: templates/email/low_stock_notification.html:30
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -11883,11 +12248,11 @@ msgstr ""
#: templates/js/translated/attachment.js:129
msgid "Delete Attachments"
-msgstr ""
+msgstr "Kustuta manused"
#: templates/js/translated/attachment.js:205
msgid "Delete attachments"
-msgstr ""
+msgstr "Kustuta manused"
#: templates/js/translated/attachment.js:260
msgid "Attachment actions"
@@ -11899,19 +12264,19 @@ msgstr ""
#: templates/js/translated/attachment.js:334
msgid "Edit Attachment"
-msgstr ""
+msgstr "Muuda manust"
#: templates/js/translated/attachment.js:365
msgid "Upload Date"
-msgstr ""
+msgstr "Üleslaadimise kuupäev"
#: templates/js/translated/attachment.js:385
msgid "Edit attachment"
-msgstr ""
+msgstr "Muuda manust"
#: templates/js/translated/attachment.js:393
msgid "Delete attachment"
-msgstr ""
+msgstr "Kustuta manus"
#: templates/js/translated/barcode.js:43
msgid "Scan barcode data here using barcode scanner"
@@ -12039,10 +12404,10 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
-msgstr ""
+msgstr "Sulge"
#: templates/js/translated/bom.js:306
msgid "Download BOM Template"
@@ -12058,7 +12423,7 @@ msgstr ""
#: templates/js/translated/bom.js:357
msgid "Levels"
-msgstr ""
+msgstr "Tasemed"
#: templates/js/translated/bom.js:358
msgid "Select maximum number of BOM levels to export (0 = all levels)"
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
-msgstr ""
+msgstr "Vali"
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,255 +13014,255 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
-msgstr ""
+msgstr "Muuda kontakti"
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
-msgstr ""
+msgstr "Roll"
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
-msgstr ""
+msgstr "Kustuta kontaktid"
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
-msgstr ""
+msgstr "Kontakte ei leitud"
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
-msgstr ""
+msgstr "Telefoninumber"
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
-msgstr ""
+msgstr "E-posti aadress"
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
-msgstr ""
+msgstr "Kustuta kontakt"
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
-msgstr ""
+msgstr "Loo uus aadress"
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
-msgstr ""
+msgstr "Muuda aadressi"
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
-msgstr ""
+msgstr "Kustuta aadressid"
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
-msgstr ""
+msgstr "Aadresse ei leitud"
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
-msgstr ""
+msgstr "Parameetreid ei leitud"
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
-msgstr ""
+msgstr "Muuda parameetrid"
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
-msgstr ""
+msgstr "Kustuta parameeter"
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
-msgstr ""
+msgstr "Muuda parameetrit"
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
-msgstr ""
+msgstr "Kustuta parameeter"
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
-msgstr ""
+msgstr "Saadavus"
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
-msgstr ""
+msgstr "Viimane uuendus"
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
#: templates/js/translated/filters.js:189
#: templates/js/translated/filters.js:670
msgid "true"
-msgstr ""
+msgstr "tõene"
#: templates/js/translated/filters.js:193
#: templates/js/translated/filters.js:671
msgid "false"
-msgstr ""
+msgstr "väär"
#: templates/js/translated/filters.js:217
msgid "Select filter"
-msgstr ""
+msgstr "Vali filter"
#: templates/js/translated/filters.js:440
msgid "Print Labels"
-msgstr ""
+msgstr "Prindi sildid"
#: templates/js/translated/filters.js:444
msgid "Print Reports"
-msgstr ""
+msgstr "Prindi aruanded"
#: templates/js/translated/filters.js:456
msgid "Download table data"
@@ -12909,20 +13274,20 @@ msgstr ""
#: templates/js/translated/filters.js:472
msgid "Add new filter"
-msgstr ""
+msgstr "Lisa uus filter"
#: templates/js/translated/filters.js:480
msgid "Clear all filters"
-msgstr ""
+msgstr "Tühjenda kõik filtrid"
#: templates/js/translated/filters.js:580
msgid "Create filter"
-msgstr ""
+msgstr "Loo filter"
#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:394
#: templates/js/translated/forms.js:408 templates/js/translated/forms.js:422
msgid "Action Prohibited"
-msgstr ""
+msgstr "Toiming on keelatud"
#: templates/js/translated/forms.js:381
msgid "Create operation not allowed"
@@ -12946,7 +13311,7 @@ msgstr ""
#: templates/js/translated/forms.js:904
msgid "Enter a valid number"
-msgstr ""
+msgstr "Sisesta korrektne number"
#: templates/js/translated/forms.js:1478 templates/modals.html:19
#: templates/modals.html:43
@@ -12977,21 +13342,21 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
-msgstr ""
+msgstr "YES"
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
-msgstr ""
-
-#: templates/js/translated/helpers.js:96
-msgid "True"
-msgstr ""
+msgstr "EI"
#: templates/js/translated/helpers.js:97
+msgid "True"
+msgstr "Tõene"
+
+#: templates/js/translated/helpers.js:98
msgid "False"
-msgstr ""
+msgstr "Väär"
#: templates/js/translated/index.js:104
msgid "No parts required for builds"
@@ -12999,7 +13364,7 @@ msgstr ""
#: templates/js/translated/label.js:48 templates/js/translated/report.js:38
msgid "Select Items"
-msgstr ""
+msgstr "Vali kirjed"
#: templates/js/translated/label.js:49 templates/js/translated/report.js:39
msgid "No items selected for printing"
@@ -13012,13 +13377,13 @@ msgstr ""
#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:159
#: templates/js/translated/modals.js:688
msgid "Cancel"
-msgstr ""
+msgstr "Tühista"
#: templates/js/translated/modals.js:64 templates/js/translated/modals.js:158
#: templates/js/translated/modals.js:756 templates/js/translated/modals.js:1064
#: templates/modals.html:28 templates/modals.html:51
msgid "Submit"
-msgstr ""
+msgstr "Esita"
#: templates/js/translated/modals.js:157
msgid "Form Title"
@@ -13034,11 +13399,11 @@ msgstr ""
#: templates/js/translated/modals.js:687
msgid "Accept"
-msgstr ""
+msgstr "Nõustu"
#: templates/js/translated/modals.js:745
msgid "Loading Data"
-msgstr ""
+msgstr "Andmete laadimine"
#: templates/js/translated/modals.js:1016
msgid "Invalid response from server"
@@ -13070,7 +13435,7 @@ msgstr ""
#: templates/js/translated/news.js:33
msgid "No news found"
-msgstr ""
+msgstr "Uudiseid ei leitud"
#: templates/js/translated/news.js:38
#: templates/js/translated/notification.js:46
@@ -13080,19 +13445,19 @@ msgstr ""
#: templates/js/translated/notification.js:52
msgid "Age"
-msgstr ""
+msgstr "Vanus"
#: templates/js/translated/notification.js:65
msgid "Notification"
-msgstr ""
+msgstr "Teavitus"
#: templates/js/translated/notification.js:224
msgid "Mark as unread"
-msgstr ""
+msgstr "Märgi mitteloetuks"
#: templates/js/translated/notification.js:228
msgid "Mark as read"
-msgstr ""
+msgstr "Märgi loetuks"
#: templates/js/translated/notification.js:254
msgid "No unread notifications"
@@ -13124,28 +13489,28 @@ msgstr ""
#: templates/js/translated/order.js:280
msgid "Edit Line"
-msgstr ""
+msgstr "Muuda rida"
#: templates/js/translated/order.js:293
msgid "Delete Line"
-msgstr ""
+msgstr "Kustuta rida"
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
#: templates/js/translated/order.js:394
msgid "Duplicate line"
-msgstr ""
+msgstr "Tee reast koopia"
#: templates/js/translated/order.js:395
msgid "Edit line"
-msgstr ""
+msgstr "Muuda rida"
#: templates/js/translated/order.js:399
msgid "Delete line"
-msgstr ""
+msgstr "Kustuta rida"
#: templates/js/translated/part.js:91
msgid "Part Attributes"
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
-msgstr ""
+msgstr "Maksimaalne kogus"
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13541,11 +13906,11 @@ msgstr ""
#: templates/js/translated/plugin.js:189
msgid "Enable"
-msgstr ""
+msgstr "Lülita sisse"
#: templates/js/translated/plugin.js:189
msgid "Disable"
-msgstr ""
+msgstr "Lülita välja"
#: templates/js/translated/plugin.js:203
msgid "Plugin updated"
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
-msgstr ""
+msgstr "Jäta vahele"
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14262,7 +14593,7 @@ msgstr ""
#: templates/js/translated/stock.js:1032
msgid "Move"
-msgstr ""
+msgstr "Liiguta"
#: templates/js/translated/stock.js:1038
msgid "Count Stock"
@@ -14270,7 +14601,7 @@ msgstr ""
#: templates/js/translated/stock.js:1039
msgid "Count"
-msgstr ""
+msgstr "Kogus"
#: templates/js/translated/stock.js:1043
msgid "Remove Stock"
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -14926,7 +15241,7 @@ msgstr ""
#: templates/js/translated/tables.js:561
msgid "All"
-msgstr ""
+msgstr "Kõik"
#: templates/navbar.html:45
msgid "Buy"
@@ -14938,23 +15253,23 @@ msgstr ""
#: templates/navbar.html:121
msgid "Show Notifications"
-msgstr ""
+msgstr "Näita teavitusi"
#: templates/navbar.html:124
msgid "New Notifications"
-msgstr ""
+msgstr "Uued teavitused"
#: templates/navbar.html:144 users/models.py:201
msgid "Admin"
-msgstr ""
+msgstr "Admin"
#: templates/navbar.html:148
msgid "Logout"
-msgstr ""
+msgstr "Logi välja"
#: templates/notes_buttons.html:6 templates/notes_buttons.html:7
msgid "Save"
-msgstr ""
+msgstr "Salvesta"
#: templates/notifications.html:9
msgid "Show all notifications and history"
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15038,7 +15349,7 @@ msgstr ""
#: templates/socialaccount/login.html:24
msgid "Continue"
-msgstr ""
+msgstr "Jätka"
#: templates/socialaccount/login.html:29
msgid "Invalid SSO Provider"
@@ -15071,7 +15382,7 @@ msgstr ""
#: templates/stats.html:18
msgid "Database"
-msgstr ""
+msgstr "Andmebaas"
#: templates/stats.html:26
msgid "Server is running in debug mode"
@@ -15131,39 +15442,39 @@ msgstr ""
#: templates/test_statistics_table.html:16
msgid "Failed"
-msgstr ""
+msgstr "Ebaõnnestus"
#: templates/yesnolabel.html:4
msgid "Yes"
-msgstr ""
+msgstr "Jah"
#: templates/yesnolabel.html:6
msgid "No"
-msgstr ""
+msgstr "Ei"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
-msgstr ""
+msgstr "Kasutajad"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
-msgstr ""
+msgstr "Isiklik info"
+
+#: users/admin.py:282
+msgid "Permissions"
+msgstr "Õigused"
#: users/admin.py:285
-msgid "Permissions"
-msgstr ""
-
-#: users/admin.py:288
msgid "Important dates"
-msgstr ""
+msgstr "Olulised kuupäevad"
#: users/authentication.py:29 users/models.py:138
msgid "Token has been revoked"
@@ -15175,27 +15486,27 @@ msgstr ""
#: users/models.py:81
msgid "API Token"
-msgstr ""
+msgstr "API tunnus"
#: users/models.py:82
msgid "API Tokens"
-msgstr ""
+msgstr "API tunnused"
#: users/models.py:118
msgid "Token Name"
-msgstr ""
+msgstr "Lunnuse nimi"
#: users/models.py:119
msgid "Custom token name"
-msgstr ""
+msgstr "Kohandatud tunnuse nimi"
#: users/models.py:125
msgid "Token expiry date"
-msgstr ""
+msgstr "Tunnuse aegumise kuupäev"
#: users/models.py:133
msgid "Last Seen"
-msgstr ""
+msgstr "Viimati nähtud"
#: users/models.py:134
msgid "Last time the token was used"
@@ -15203,37 +15514,37 @@ msgstr ""
#: users/models.py:138
msgid "Revoked"
-msgstr ""
+msgstr "Tühistatud"
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
-msgstr ""
+msgstr "Grupp"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
-msgstr ""
+msgstr "Vaade"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
-msgid "Change"
-msgstr ""
-
#: users/models.py:402
+msgid "Change"
+msgstr "Muuda"
+
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po
index 7138efac25..9821d9ac03 100644
--- a/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/fa/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: fa\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "Address e API peida nashod"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "کاربر سطح دسترسی نمایش این مدل را ندارد"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "مقداری افزوده نشده"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "تعداد افزوده شده اشتباه است"
-
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "جزئیات خطا را می توان در پنل مدیریت پیدا کرد"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "تاریخ را وارد کنید"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "یادداشت"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "مقدار '{name}' در قالب الگو ظاهر قرار نمی گیرد"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "مقدار ارائه شده با الگوی مورد نیاز مطابقت ندارد: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "آدرس ایمیل اصلی ارائه شده معتبر نیست."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "دامنه ایمیل ارائه شده تایید نشده است."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "خطا در اتصال"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "سرور با کد وضعیت نامعتبر پاسخ داد"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "یک استثنا رخ داده است"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "سرور با مقدار طول محتوا نامعتبر پاسخ داد"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "اندازه عکس بسیار بزرگ است"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr ""
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr ""
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr ""
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr ""
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr ""
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr ""
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr ""
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr ""
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
-
-#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/locales.py:39
-msgid "Norwegian"
+msgid "Lithuanian"
msgstr ""
#: InvenTree/locales.py:40
-msgid "Polish"
+msgid "Latvian"
msgstr ""
#: InvenTree/locales.py:41
-msgid "Portuguese"
+msgid "Dutch"
msgstr ""
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
+msgid "Norwegian"
msgstr ""
#: InvenTree/locales.py:43
-msgid "Romanian"
+msgid "Polish"
msgstr ""
#: InvenTree/locales.py:44
-msgid "Russian"
+msgid "Portuguese"
msgstr ""
#: InvenTree/locales.py:45
-msgid "Slovak"
+msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/locales.py:46
-msgid "Slovenian"
+msgid "Romanian"
msgstr ""
#: InvenTree/locales.py:47
-msgid "Serbian"
+msgid "Russian"
msgstr ""
#: InvenTree/locales.py:48
-msgid "Swedish"
+msgid "Slovak"
msgstr ""
#: InvenTree/locales.py:49
-msgid "Thai"
+msgid "Slovenian"
msgstr ""
#: InvenTree/locales.py:50
-msgid "Turkish"
+msgid "Serbian"
msgstr ""
#: InvenTree/locales.py:51
-msgid "Ukrainian"
+msgid "Swedish"
msgstr ""
#: InvenTree/locales.py:52
-msgid "Vietnamese"
+msgid "Thai"
msgstr ""
#: InvenTree/locales.py:53
-msgid "Chinese (Simplified)"
+msgid "Turkish"
msgstr ""
#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "فایلهای داده"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "فایل را برای بارگذاری انتخاب کنید"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "این نوع فایل پشتیبانی نمیشود"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "حجم فایل خیلی بزرگ است"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "هیچ ستونی در فایل یافت نشد"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "هیچ ردیف داده ای در فایل یافت نشد"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "هیچ ردیف داده ای ارائه نشده است"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "هیچ ستون داده ای ارائه نشده است"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "ستون مورد نیاز وجود ندارد: \"{name}\""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "ستون تکراری: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "آدرس فایل تصویری از راه دور"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "مرجع سفارش فروش"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "منبع محل"
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "مقصد"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "هیچ عملیات کاربر-محوری، مشخص نشده است"
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po
index 60742baa75..6fbda0176d 100644
--- a/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/fi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: fi\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API-rajapintaa ei löydy"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Käyttäjän oikeudet eivät riitä kohteen tarkastelemiseen"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Arvoa ei annettu"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr ""
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Annettu määrä on virheellinen"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Virheen tiedot löytyvät hallintapaneelista"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Anna päivämäärä"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Merkinnät"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr ""
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Annettu ensisijainen sähköpostiosoite ei kelpaa."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Annettu määrä on virheellinen"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Tyhjä sarjanumero"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplikaatti sarjanumero"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Sarjanumeroita ei löytynyt"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Yhteysvirhe"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Palvelin vastasi virheellisellä tilakoodilla"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Kuva on liian iso"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Kuvan lataus ylitti enimmäiskoon"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Etäpalvelin palautti tyhjän vastauksen"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Annettu URL ei ole kelvollinen kuvatiedosto"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "tšekki"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "tanska"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "saksa"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "kreikka"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "englanti"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "espanja"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "espanja (Meksiko)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "farsi / persia"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "suomi"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "ranska"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "heprea"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "unkari"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "italia"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "japani"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "korea"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "hollanti"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "norja"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "puola"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "portugali"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "portugali (Brasilia)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr ""
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "venäjä"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr ""
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "slovenia"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr ""
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "ruotsi"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "thai"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "turkki"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr ""
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "vietnam"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr ""
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Sähköposti"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Metatietojen tulee olla python dict objekti"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Liitännäisen metadata"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON metadatakenttä, ulkoisten liitännäisten käyttöön"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Virheellisesti muotoiltu malli"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Viitekenttä ei voi olla tyhjä"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Viitenumero on liian suuri"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Virheellinen valinta"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Nimi"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Kuvaus"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Kuvaus (valinnainen)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Polku"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Viivakoodin Tiedot"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Palvelinvirhe"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Täytyy olla kelvollinen luku"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Valuutta"
msgid "Select currency from available options"
msgstr "Valitse valuutta käytettävissä olevista vaihtoehdoista"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Käyttäjätunnus"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Etunimi"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr "Sukunimi"
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr "Aktiivinen"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Virheellinen arvo"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Datatiedosto"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Valitse lähetettävä datatiedosto"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Tiedostotyyppiä ei tueta"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Tiedosto on liian suuri"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Datarivejä ei annettu"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Datasarakkeita ei annettu"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Vaadittu sarake puuttuu: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikaatti sarake: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "Kuvatiedoston URL"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Kuvien lataaminen ei ole käytössä"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "InvenTree järjestelmän terveystarkastukset epäonnistui"
-
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Muokkaa käyttäjätietoja"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Aseta salasana"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Salasanat eivät täsmää"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Virheellinen salasana"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Järjestelmän tiedot"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Tietoja InvenTree:stä"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr "Saatavilla"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Osa"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Osa"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Ulkoinen linkki"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Linkki ulkoiseen URLiin"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Määrä"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Varastotuote"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Sarjanumerot"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Sijainti"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Tila"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Ei sallittu"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Valmistajan osanumero"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Sarjanumero"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Seurattavissa"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Odottaa"
@@ -1722,21 +1750,21 @@ msgstr "Odottaa"
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Peruttu"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Valmis"
@@ -1744,165 +1772,162 @@ msgstr "Valmis"
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Poista viivakoodin linkitys"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Linkitä viivakoodi"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr "Myöhässä"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Prioriteetti"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Valmis"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Tiedostomuotoa ei tueta: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Tiedosto"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Valitse lähetettävä tiedosto"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Tiedosto"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Päivitetty"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Viimeisimmän päivityksen aikaleima"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Ei ryhmää"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Uudelleenkäynnistys vaaditaan"
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Yrityksen nimi"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Yrityksen sisäinen nimi"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Oletusvaluutta"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "päivää"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automaattinen varmuuskopionti"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi"
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Automaattisen varmuuskopioinnin aikaväli"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Viivakoodituki"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Komponentti"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Ostettavissa"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Sisäiset hinnat"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Sisäisen hinnan ohitus"
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Sivun koko"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Täytä sarjanumerot automaattisesti"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Salli salasananpalautus"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Salli rekisteröinti"
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "Salli SSO"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "Salli SSO kirjautumissivuilla"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Salli SSO rekisteröinti"
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Sähköposti vaaditaan"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "Sähköpostiosoite kahdesti"
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Salasana kahdesti"
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Sallitut verkkotunnukset"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Pakota MFA"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
-msgstr "Näytä uutiset"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
+msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
-msgstr "Näytä uutiset kotisivulla"
+msgid "Show depleted stock"
+msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
msgstr ""
+#: common/models.py:2389
+msgid "Show News"
+msgstr "Näytä uutiset"
+
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
-msgstr ""
+msgid "Show news on the homepage"
+msgstr "Näytä uutiset kotisivulla"
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Käyttäjä"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Hinta"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Salaisuus"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr "Isäntä"
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Otsikko"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Linkki"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Julkaistu"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Julkaisija"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Yhteenveto"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Kuvatiedosto"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Liite"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Puuttuva tiedosto"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Puuttuva ulkoinen linkki"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Valitse liitettävä tiedosto"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Kommentti"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr "Avain"
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Uusi {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Tiedostonimi"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Yritys"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Yritykset"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Yrityksen kuvaus"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Sivusto"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Yrityksen sivuston URL"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Puhelinnumero"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Kontakti"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Osoite"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Valmistaja"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Valitse valmistaja"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Arvo"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Toimittaja"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Valitse toimittaja"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Toimittajan varastonimike"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Valitse valmistajan osa"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Muistiinpano"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Muokkaa yrityksen tietoja"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Muokkaa yritystä"
@@ -4605,11 +4784,12 @@ msgstr "Poista yritys"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Asiakas"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Puhelin"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Poista"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr "Uusi asiakas"
msgid "New Company"
msgstr "Uusi yritys"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Hinta yhteensä"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr "Tilauksen valuutta"
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Tilauksen viite"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Asiakkaan viite "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Vastaanotettu"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Lähetetty"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Seurantakoodi"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Laskunumero"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Viivakoodi"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Kadonnut"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Palautettu"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Kesken"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Muokkaa tilausta"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr "Kopioi tilaus"
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Peru tilaus"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Kokonaiskustannukset"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "Kokonaiskustannuksia ei voitu laskea"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Toiminnot"
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Hintaa ei löytynyt"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Avainsanat"
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Kategoria"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Oletus avainsanat"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr "Kuvake"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr "Kuvake (valinnainen)"
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Päivämäärä"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "Muut merkinnät"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr "Raportti"
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Käytössä"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr "Valmistajan osanumero"
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr "Luo raportti"
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr "Monista osa"
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Muokkaa osaa"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr "Poista osa"
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Muokkaa"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr "Avaa linkki"
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr "Avain"
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Suodattimet"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Leveys [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Korkeus [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr "Sarjanumero"
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Hylätty"
msgid "Quarantined"
msgstr "Asetettu karanteeniin"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Varastotuote luotu"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Sijainti muutettu"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Varasto päivitetty"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "edellinen sivu"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr "Siirry edeltävään sarjanumeroon"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr "seuraava sivu"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr "Siirry seuraavaan sarjanumeroon"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr "Varoitus"
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr "Muokkaa sijaintia"
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr "Poista sijainti"
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr "Uusi sijainti"
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr "Ladataan..."
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Poista"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr "Vahvistamaton"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr "Ensisijainen"
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr "kopioi leikepöydälle"
@@ -11738,23 +12102,24 @@ msgstr "Lisää liite"
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr "Palvelimen uudelleenkäynnistys vaaditaan"
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr "Sulje"
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr "Kyllä"
msgid "No"
msgstr "Ei"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Käyttäjät"
-#: users/admin.py:105
+#: users/admin.py:102
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:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Henkilökohtaiset tiedot"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Oikeudet"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Ryhmä"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Näytä"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Oikeus tarkastella kohteita"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Oikeus lisätä kohteita"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Muuta"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Oikeus muokata kohteita"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Oikeus poistaa kohteita"
diff --git a/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po
index 116f93f987..43a1478e67 100644
--- a/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/fr/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 10:27\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: fr\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "Point de terminaison de l'API introuvable"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
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:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Unité fournie invalide ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Pas de valeur renseignée"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Impossible de convertir {original} en {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr "Quantité fournie invalide"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Quantité fournie invalide ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
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:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Entrer la date"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Notes"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, 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:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "La valeur fournie ne correspond pas au modèle requis : "
@@ -126,403 +134,415 @@ msgstr "Vous devez taper le même e-mail à chaque fois."
#: InvenTree/forms.py:221
msgid "MFA Registration is disabled."
-msgstr ""
+msgstr "L'enregistrement MFA est désactivé."
#: InvenTree/forms.py:259 InvenTree/forms.py:267
msgid "The provided primary email address is not valid."
msgstr "L'adresse e-mail principale fournie n'est pas valide."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Le domaine e-mail fourni n'est pas approuvé."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "L'enregistrement est désactivé."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Quantité fournie invalide"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Chaîne de numéro de série vide"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Numéro de série en doublon"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Plage de groupe non valide : {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "La plage de groupe {group} dépasse la quantité autorisée ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Séquence de groupe invalide : {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Aucun numéro de série trouvé"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Le nombre de numéros de série uniques ({len(serials)}) doit correspondre à la quantité ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Retirer les balises HTML de cette valeur"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Erreur de connexion"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Le serveur a répondu avec un code de statut invalide"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Une erreur est survenue"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
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:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Image trop volumineuse"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "La taille de l'image dépasse la taille maximale autorisée"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Le serveur distant a renvoyé une réponse vide"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "L'URL fournie n'est pas un fichier image valide"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Arabe"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgare"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Tchèque"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Danois"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Allemand"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Grec"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Anglais"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Espagnol"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Espagnol (Mexique)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Estonien"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Perse"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finnois"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Français"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hébreu"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hindi"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Hongrois"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italien"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japonais"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Coréen"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr "Lituanien"
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Letton"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Néerlandais"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norvégien"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polonais"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugais"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugais (Brésilien)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Roumain"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Russe"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Slovaque"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Slovénien"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbe"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Suédois"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thaïlandais"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turc"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ukrainien"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamien"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Chinois (Simplifié)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Chinois (Traditionnel)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] Se connecter à l'application"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "E-mail"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Erreur lors de l'exécution de la validation du plugin"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Les metadata doivent être un objet python de type \"dict\""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Métadonnées de l'Extension"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "Champs metadata JSON, pour plugins tiers"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Modèle mal formaté"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Clé de format inconnu spécifiée"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Clé de format requise manquante"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Le champ de référence ne peut pas être vide"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "La référence doit correspondre au modèle requis"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Le numéro de référence est trop grand"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
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:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Choix invalide"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Nom"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Description"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Description (facultative)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Chemin d'accès"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Notes Markdown (option)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Données du code-barres"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Données de code-barres tierces"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Hash du code-barre"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Hachage unique des données du code-barres"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Code-barres existant trouvé"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Erreur serveur"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Une erreur a été loguée par le serveur."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Doit être un nombre valide"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Devise"
msgid "Select currency from available options"
msgstr "Sélectionnez la devise à partir des options disponibles"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Nom d'utilisateur"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Prénom"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "Prénom de l'utilisateur"
@@ -552,30 +572,30 @@ msgstr "Nom"
msgid "Last name of the user"
msgstr "Nom de famille de l'utilisateur"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "Adresse e-mail de l'utilisateur"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Staff"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr "Cet utilisateur a-t-il les permissions du staff"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Super-utilisateur"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr "Cet utilisateur est-il un super-utilisateur"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr "Cet utilisateur est-il un super-utilisateur"
msgid "Active"
msgstr "Actif"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Ce compte d'utilisateur est-il actif"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Vous n'avez pas la permission de modifier ce rôle utilisateur."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Seuls les super-utilisateurs peuvent créer de nouveaux utilisateurs"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Votre compte a été créé."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Veuillez utiliser la fonction de réinitialisation du mot de passe pour vous connecter"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Bienvenue dans InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Valeur non valide"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Fichier de données"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Sélectionnez le fichier de données à envoyer"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Format de fichier non supporté"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Fichier trop volumineux"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Pas de colonnes trouvées dans le fichier"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Par de lignes de données trouvées dans le fichier"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Pas de lignes de données fournies"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Pas de colonne de données fournie"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Colonne requise manquante : {name}"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Colonne duliquée : '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Images distantes"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL du fichier image distant"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Le téléchargement des images depuis une URL distante n'est pas activé"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Échec de la vérification du processus d'arrière-plan"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "Backend d'email non configuré"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Échec des contrôles de santé du système"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Base de données inconnue"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Unité invalide"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Code de devise invalide"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "La valeur de surplus ne doit pas être négative"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Le surplus ne doit pas dépasser 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Valeur invalide pour le dépassement"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Modifier les informations utilisateur"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Définir le mot de passe"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Les mots de passe doivent correspondre"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Mot de passe incorrect"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Informations système"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "À propos d'InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Fabrication parente"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr "Version Précédente"
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
-msgstr ""
+msgstr "Attribué à moi"
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Émis par"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
-msgstr ""
+msgstr "Attribué à"
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "La construction doit être annulée avant de pouvoir être supprimée"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Consommable"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Facultatif"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Assemblage"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Suivi"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
-msgstr ""
+msgstr "Testable"
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Allouée"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Allouée"
msgid "Available"
msgstr "Disponible"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Pièce"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Ordre de Fabrication"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Ordre de Fabrication"
msgid "Build Orders"
msgstr "Ordres de Fabrication"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
-msgstr ""
+msgstr "La liste des composants de l'assemblage n'a pas été validée"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Choix invalide pour la fabrication parente"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr "Un utilisateur ou un groupe responsable doit être spécifié"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "La pièce de commande de construction ne peut pas être changée"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Référence de l' Ordre de Fabrication"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Référence"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Brève description de la fabrication (optionnel)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "BuildOrder associé a cette fabrication"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Pièce"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Sélectionnez la pièce à construire"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Bon de commande de référence"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Commande de vente à laquelle cette construction est allouée"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Emplacement d'origine"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Emplacement cible"
-#: build/models.py:302
+#: build/models.py:301
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:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Quantité a fabriquer"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Nombre de stock items à construire"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Articles terminés"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Nombre d'articles de stock qui ont été terminés"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "État de la construction"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Code de statut de construction"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Code de lot"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Code de lot pour ce build output"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Date de création"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Date d'achèvement cible"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Date d'achèvement"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "achevé par"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Émis par"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Utilisateur ayant émis cette commande de construction"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Responsable"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Utilisateur ou groupe responsable de cet ordre de construction"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Lien Externe"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Lien vers une url externe"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Priorité de fabrication"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Priorité de cet ordre de fabrication"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Code du projet"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Code de projet pour cet ordre de construction"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr "Échec du déchargement de la tâche pour terminer les allocations de construction"
@@ -1110,610 +1129,619 @@ msgstr "La commande de construction {build} a été effectuée"
msgid "A build order has been completed"
msgstr "Une commande de construction a été effectuée"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr "Les numéros de série doivent être fournis pour les pièces traçables"
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Pas d'ordre de production défini"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "L'ordre de production a déjà été réalisé"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "L'ordre de production de correspond pas à l'ordre de commande"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "La quantité doit être supérieure à zéro"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "La quantité ne peut pas être supérieure à la quantité de sortie"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr "La sortie de compilation {serial} n'a pas réussi tous les tests requis"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Création de l'objet"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Quantité"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Quantité requise pour la commande de construction"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "L'article de stock est suralloué"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "La quantité allouée doit être supérieure à zéro"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantité doit être de 1 pour stock sérialisé"
-#: build/models.py:1675
+#: build/models.py:1699
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:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Article en stock"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Stock d'origine de l'article"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Quantité de stock à allouer à la construction"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Installer dans"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Stock de destination de l'article"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
-msgstr ""
+msgstr "Niveau de construction"
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Nom de l'article"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Sortie d'assemblage"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "L'ordre de production ne correspond pas à l'ordre parent"
-#: build/serializers.py:188
+#: build/serializers.py:235
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:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Cet ordre de production a déjà été produit"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Cet ordre de production n'est pas complètement attribué"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Entrer la quantité désiré pour la fabrication"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Quantité entière requise pour les pièces à suivre"
-#: build/serializers.py:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Numéros de série"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Entrer les numéros de séries pour la fabrication"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Emplacement"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Allouer automatiquement les numéros de série"
-#: build/serializers.py:331
+#: build/serializers.py:378
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:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr "Les numéros de série doivent être fournis pour les pièces traçables"
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
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:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Une liste d'ordre de production doit être fourni"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Emplacement du stock pour les sorties épuisées"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Ignorer les allocations"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Abandonner les allocations de stock pour les sorties abandonnées"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Motif de l'élimination des produits de construction(s)"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Emplacement des ordres de production achevés"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "État"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Accepter l'allocation incomplète"
-#: build/serializers.py:542
+#: build/serializers.py:586
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:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr "Consommation du stock alloué"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Retirer les sorties incomplètes"
-#: build/serializers.py:662
+#: build/serializers.py:706
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:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Non permis"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Accepter comme consommé par cet ordre de construction"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Désaffecter avant de terminer cette commande de fabrication"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Stock suralloué"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Certains articles de stock ont été suralloués"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Accepter les non-alloués"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Le stock requis n'a pas encore été totalement alloué"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Accepter les incomplèts"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "La quantité nécessaire n'a pas encore été complétée"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "L'ordre de production a des sorties incomplètes"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Chaîne d'assemblage"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Sortie d'assemblage"
-#: build/serializers.py:836
+#: build/serializers.py:880
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:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Élément de la ligne de construction"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "L'article doit être en stock"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantité disponible ({q}) dépassée"
-#: build/serializers.py:955
+#: build/serializers.py:999
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:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Les articles d'allocation doivent être fournis"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Emplacement de stock où les pièces doivent être fournies (laissez vide pour les prendre à partir de n'importe quel emplacement)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Emplacements exclus"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Exclure les articles de stock de cet emplacement sélectionné"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Stock interchangeable"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Les articles de stock à plusieurs emplacements peuvent être utilisés de manière interchangeable"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Stock de substitution"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Autoriser l'allocation de pièces de remplacement"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Objets Optionnels"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
-msgstr ""
+msgstr "Nom de l'endroit"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Conditionnement"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "ID de composant"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Description pièce"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Numéro de série"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
-msgstr ""
+msgstr "Quantité allouée"
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
-msgstr ""
+msgstr "Quantité disponible"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Traçable"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
-msgstr ""
+msgstr "Reçu de quelqu'un"
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Article du BOM"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Stock alloué"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "En Commande"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr "En Production"
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr "Stock disponible"
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Stock disponible"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "En attente"
@@ -1722,21 +1750,21 @@ msgstr "En attente"
msgid "Production"
msgstr "Fabrication"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
-msgstr ""
+msgstr "En pause"
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Annulé"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Terminé"
@@ -1744,165 +1772,162 @@ msgstr "Terminé"
msgid "Stock required for build order"
msgstr "Stock requis pour la commande de construction"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Ordre de commande en retard"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, 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
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Image miniature de l'article"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Actions de code-barres"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Afficher le QR Code"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Délier le code-barre"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Lier le code-barre"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Actions d'impression"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Imprimer le rapport d'ordre de construction"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Modifier construction/ordre de construction"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Modifier l'assemblage"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Dupliquer la construction"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Annuler l'assemblage"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Supprimer l'assemblage"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
-msgstr ""
+msgstr "Création de version"
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Compléter l'assemblage"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Description de la construction"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Aucune sortie de construction n'a été créée pour cet ordre de construction"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "L'ordre de construction est prêt à être marqué comme terminé"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "L'ordre de construction ne peut pas être achevé car il reste des outputs en suspens"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Le nombre de constructions requis n'a pas encore été atteint"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Date Cible"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Cette construction était due le %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Cette construction était due le %(target)s"
msgid "Overdue"
msgstr "En retard"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: 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:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Commandes"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Priorité"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
-msgstr ""
+msgstr "Commande de fabrication de version"
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
-msgstr ""
+msgstr "Envoyer cette demande de version ?"
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Supprimer la commande de construction"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Génération du QR Code de commande"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Lier le code-barres pour construire la commande"
@@ -1968,8 +1994,9 @@ 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:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Destination"
@@ -1981,23 +2008,24 @@ msgstr "Stockage de destination non défini"
msgid "Allocated Parts"
msgstr "Pièces allouées"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Lot"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Créé le"
@@ -2005,8 +2033,8 @@ 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Terminé"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr "Commander les pièces requises"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Commander des pièces"
@@ -2120,7 +2148,7 @@ msgstr "Nouvel ordre de construction"
msgid "Build Order Details"
msgstr "Détails de la commande de construction"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2137,45 +2165,40 @@ msgstr "Sorties incomplètes"
#: build/templates/build/sidebar.html:24
#: part/templates/part/part_sidebar.html:56
msgid "Test Statistics"
-msgstr ""
+msgstr "Résultats des essais"
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
-msgstr ""
+msgstr "C'est un lien"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
-msgstr ""
+msgstr "C'est un fichier"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr "L'utilisateur n'a pas les permissions de supprimer cette pièce jointe"
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr "Code de devise invalide"
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr "Code de devise en double"
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr "Aucun code de devise valide fourni"
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Pas de plugin"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Type de fichier non pris en charge {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Erreur de lecture du fichier (encodage invalide)"
@@ -2192,1883 +2215,2039 @@ msgstr "Erreur de lecture du fichier (dimension incorrecte)"
msgid "Error reading file (data could be corrupted)"
msgstr "Erreur de lecture du fichier (les données pourraient être corrompues)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Fichier"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Sélectionner un fichier à téléverser"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Fichier"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "Sélectionner le fichier {name} à uploader"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Mise à jour"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Date de la dernière mise à jour"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr "L'URL du site est verrouillée par configuration"
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Code projet unique"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Description du projet"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr "Utilisateur ou groupe responsable de ce projet"
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
-msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Valeur du paramètre"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "La valeur choisie n'est pas une option valide"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "La valeur doit être une valeur booléenne"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "La valeur doit être un nombre entier"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "La chaîne de caractères constituant la clé doit être unique"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Pas de groupe"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Redémarrage nécessaire"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Migration en attente"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr "Nombre de migrations de base de données en attente"
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Nom de l'instance du serveur"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Chaîne de caractères descriptive pour l'instance serveur"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Utiliser le nom de l'instance"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Utiliser le nom de l’instance dans la barre de titre"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Limiter l'affichage de `about`"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Afficher la modale `about` uniquement aux super-utilisateurs"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Nom de la société"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Nom de société interne"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "URL de base"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "URL de base pour l'instance serveur"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Devise par défaut"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Sélectionnez la devise de base pour les calculs de prix"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr "Devises supportées"
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr "Liste des codes de devises supportés"
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr "Intervalle de mise à jour des devises"
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Fréquence de mise à jour des taux de change (définir à zéro pour désactiver)"
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "jours"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr "Plugin de mise à jour de devise"
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr "Plugin de mise à jour des devises à utiliser"
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Télécharger depuis l'URL"
-#: common/models.py:1307
+#: common/models.py:1364
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:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Limite du volume de téléchargement"
-#: common/models.py:1314
+#: common/models.py:1371
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:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr "Validation stricte d'URL"
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr "Spécification du schéma nécessaire lors de la validation des URL"
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Confirmation requise"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Profondeur de l'arborescence"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Intervalle de vérification des mises à jour"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Backup automatique"
-#: common/models.py:1355
+#: common/models.py:1412
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:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Intervalle de sauvegarde automatique"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique"
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Intervalle de suppression des tâches"
-#: common/models.py:1369
+#: common/models.py:1426
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:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Intervalle de suppression du journal d'erreur"
-#: common/models.py:1378
+#: common/models.py:1435
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:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Intervalle de suppression du journal de notification"
-#: common/models.py:1387
+#: common/models.py:1444
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:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Support des code-barres"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr "Activer le support du scanner de codes-barres dans l'interface web"
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Délai d'entrée du code-barres"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Délai de traitement du code-barres"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Prise en charge de la webcam code-barres"
-#: common/models.py:1408
+#: common/models.py:1477
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:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Modifications de la pièce"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Activer le champ de modification de la pièce"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr "Permettre la suppression de pièces utilisées dans un assemblage"
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr "Regex IPN"
-#: common/models.py:1444
+#: common/models.py:1513
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:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Autoriser les IPN dupliqués"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Permettre à plusieurs pièces de partager le même IPN"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Autoriser l'édition de l'IPN"
-#: common/models.py:1454
+#: common/models.py:1523
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:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Copier les données de la pièce"
-#: common/models.py:1460
+#: common/models.py:1529
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:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Copier les données des paramètres de la pièce"
-#: common/models.py:1466
+#: common/models.py:1535
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:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Copier les données de test de la pièce"
-#: common/models.py:1472
+#: common/models.py:1541
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:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Copier les templates de paramètres de catégorie"
-#: common/models.py:1478
+#: common/models.py:1547
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:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Modèle"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Les pièces sont des templates par défaut"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "Les pièces peuvent être assemblées à partir d'autres composants par défaut"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Composant"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "Les pièces peuvent être utilisées comme sous-composants par défaut"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Achetable"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Les pièces sont achetables par défaut"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Vendable"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Les pièces sont vendables par défaut"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Les pièces sont traçables par défaut"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Virtuelle"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Les pièces sont virtuelles par défaut"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Afficher l'import dans les vues"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Afficher l'assistant d'importation pour certaine vues de produits"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Afficher les pièces connexes"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Afficher les pièces connexes à une pièce"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Stock initial"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Données initiales du fournisseur"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Format d'affichage du nom de la pièce"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Format pour afficher le nom de la pièce"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Icône de catégorie par défaut"
-#: common/models.py:1559
+#: common/models.py:1628
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:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Renforcer les unités des paramètres"
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr "Si des unités sont fournies, les valeurs de paramètre doivent correspondre aux unités spécifiées"
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Nombre minimal de décimales"
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Nombre minimum de décimales à afficher lors de l'affichage des prix"
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Utiliser le prix fournisseur"
-#: common/models.py:1600
+#: common/models.py:1669
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:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Remplacer l'historique des achats"
-#: common/models.py:1608
+#: common/models.py:1677
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:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Utiliser les prix des articles en stock"
-#: common/models.py:1616
+#: common/models.py:1685
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:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Âge de tarification des articles de stock"
-#: common/models.py:1624
+#: common/models.py:1693
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:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Utiliser les prix variants"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Inclure la tarification variante dans le calcul global des prix"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Variantes actives uniquement"
-#: common/models.py:1639
+#: common/models.py:1708
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:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Intervalle de regénération des prix"
-#: common/models.py:1647
+#: common/models.py:1716
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:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Prix internes"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Activer les prix internes pour les pièces"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Substitution du prix interne"
-#: common/models.py:1662
+#: common/models.py:1731
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:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Activer l'impression d'étiquettes"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Activer l'impression d'étiquettes depuis l'interface Web"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "Étiquette image DPI"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Activer les rapports"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Activer la génération de rapports"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Mode Débogage"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Générer des rapports en mode debug (sortie HTML)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr "Journal des erreurs"
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Taille de la page"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Taille de page par défaut pour les rapports PDF"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Activer les rapports de test"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Activer la génération de rapports de test"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Joindre des rapports de test"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Numéro de Série Universellement Unique"
-#: common/models.py:1721
+#: common/models.py:1776
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:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Remplir automatiquement les Numéros de Série"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Remplir automatiquement les numéros de série dans les formulaires"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Supprimer le stock épuisé"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Modèle de code de lot"
-#: common/models.py:1742
+#: common/models.py:1797
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:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Expiration du stock"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Activer la fonctionnalité d'expiration du stock"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Vendre le stock expiré"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Autoriser la vente de stock expiré"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Délai de péremption du stock"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Construction de stock expirée"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Autoriser la construction avec un stock expiré"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Contrôle de la propriété des stocks"
-#: common/models.py:1775
+#: common/models.py:1830
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:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Icône par défaut de l'emplacement du stock"
-#: common/models.py:1781
+#: common/models.py:1836
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:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Afficher les pièces en stock installées"
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Modèle de référence de commande de construction"
-#: common/models.py:1810
+#: common/models.py:1865
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:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
-msgstr ""
+msgstr "Nécessite un Responsable propriétaire"
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
-msgstr ""
+msgstr "Requiert une pièce verrouillée"
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Activer les retours de commandes"
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur"
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Modèle de référence de retour de commande"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Modifier les retours de commandes terminées"
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr "Autoriser la modification des retours après leur enregistrement"
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Modèle de référence de bon de commande"
-#: common/models.py:1888
+#: common/models.py:1943
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:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Expédition par défaut du bon de commande"
-#: common/models.py:1901
+#: common/models.py:1956
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:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Modifier les commandes de vente terminées"
-#: common/models.py:1908
+#: common/models.py:1963
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:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
-msgstr ""
+msgstr "Marquer les commandes expédiées comme achevées"
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
-msgstr ""
+msgstr "Les commandes marquées comme expédiées seront automatiquement complétées, en contournant le statut « expédié »"
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Modèle de référence de commande d'achat"
-#: common/models.py:1924
+#: common/models.py:1979
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:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Modifier les bons de commande terminés"
-#: common/models.py:1938
+#: common/models.py:1993
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:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
-msgstr ""
+msgstr "Achat automatique des commandes"
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
-msgstr ""
+msgstr "Marquer automatiquement les bons de commande comme terminés lorsque tous les articles de la ligne sont reçus"
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Activer les mots de passe oubliés"
-#: common/models.py:1954
+#: common/models.py:2009
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:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Activer les inscriptions"
-#: common/models.py:1960
+#: common/models.py:2015
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:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "Activer le SSO"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "Activer le SSO sur les pages de connexion"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Activer l'inscription SSO"
-#: common/models.py:1973
+#: common/models.py:2028
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:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
-msgstr ""
+msgstr "Activer la synchronisation du groupe SSO"
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
-msgstr ""
+msgstr "Clé du groupe SSO"
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
-msgstr ""
+msgstr "Carte de groupe SSO"
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Email requis"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "Saisie automatique des utilisateurs SSO"
-#: common/models.py:2019
+#: common/models.py:2074
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:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "Courriel en double"
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail"
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Mot de passe deux fois"
-#: common/models.py:2032
+#: common/models.py:2087
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:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Domaines autorisés"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Grouper sur inscription"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Forcer l'authentification multifacteurs"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Vérifier les plugins au démarrage"
-#: common/models.py:2061
+#: common/models.py:2116
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:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
-msgstr ""
+msgstr "Vérifier les mises à jour des plugins"
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
-msgstr ""
+msgstr "Activer les vérifications périodiques pour les mises à jour des plugins installés"
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "Activer l'intégration d'URL"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Autoriser les plugins à ajouter des chemins URL"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Activer l'intégration de navigation"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Activer les plugins à s'intégrer dans la navigation"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "Activer l'intégration de plugins"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Activer l'intégration de plugin pour ajouter des apps"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Activer l'intégration du planning"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Autoriser les plugins à éxécuter des tâches planifiées"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Activer l'intégration des évènements"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Autoriser les plugins à répondre aux évènements internes"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Activer les codes projet"
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Fonctionnalité d'inventaire"
-#: common/models.py:2119
+#: common/models.py:2181
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:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
-msgstr ""
+msgstr "Exclure les localisations externes"
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Période de l'inventaire automatique"
-#: common/models.py:2135
+#: common/models.py:2197
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:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
-msgstr ""
+msgstr "Intervalle de suppression des tâches"
-#: common/models.py:2143
+#: common/models.py:2205
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:2150
+#: common/models.py:2212
msgid "Display Users full names"
-msgstr ""
+msgstr "Afficher les noms des utilisateurs"
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
-msgstr ""
+msgstr "Activer les données de station de test"
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
+msgstr "Activer la collecte des données de la station de test pour les résultats de test"
+
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr "Clé du paramètre (doit être unique - insensible à la casse)"
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2279
msgid "Hide inactive parts"
-msgstr ""
+msgstr "Masquer les pièces inactives"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Afficher les composants suivis"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Afficher les composants suivis sur l'écran d'accueil"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Afficher les catégories suivies"
-#: common/models.py:2227
+#: common/models.py:2294
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:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Afficher les dernières pièces"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Afficher les derniers composants sur la page d'accueil"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
-msgstr ""
+msgstr "Afficher les listes de matériaux non validées"
-#: common/models.py:2239
+#: common/models.py:2306
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:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Afficher les dernières modifications du stock"
-#: common/models.py:2245
+#: common/models.py:2312
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:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Afficher le stock faible"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Afficher les articles en stock bas sur la page d'accueil"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Afficher le stock épuisé"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Afficher les stocks épuisés sur la page d'accueil"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Afficher le stock nécessaire"
-#: common/models.py:2263
+#: common/models.py:2330
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:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Afficher le stock expiré"
-#: common/models.py:2269
+#: common/models.py:2336
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:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Afficher le stock périmé"
-#: common/models.py:2275
+#: common/models.py:2342
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:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Afficher les constructions en attente"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Afficher les constructions en attente sur la page d'accueil"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Afficher les constructions en retard"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Afficher les constructions en retard sur la page d'accueil"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Afficher les commandes en suspens"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Afficher les commandes en suspens sur la page d'accueil"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Afficher les commandes en retard"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Afficher les commandes en retard sur la page d'accueil"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Afficher les envois en suspens"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Afficher les envois en suspens sur la page d'accueil"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Afficher les envois en retard"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Afficher les envois en retard sur la page d'accueil"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
-msgstr ""
+msgstr "Afficher les envois SO en attente"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Afficher les nouvelles"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Afficher les nouvelles sur la page d'accueil"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Affichage du libellé en ligne"
-#: common/models.py:2330
+#: common/models.py:2397
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:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Imprimante d'étiquettes par défaut"
-#: common/models.py:2338
+#: common/models.py:2405
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:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Affichage du rapport en ligne"
-#: common/models.py:2346
+#: common/models.py:2413
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:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Rechercher de pièces"
-#: common/models.py:2353
+#: common/models.py:2420
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:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Recherche du fournisseur de pièces"
-#: common/models.py:2359
+#: common/models.py:2426
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:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Rechercher les pièces du fabricant"
-#: common/models.py:2365
+#: common/models.py:2432
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:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Masquer les pièces inactives"
-#: common/models.py:2371
+#: common/models.py:2438
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:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Rechercher des catégories"
-#: common/models.py:2377
+#: common/models.py:2444
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:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Rechercher dans le stock"
-#: common/models.py:2383
+#: common/models.py:2450
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:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Cacher les pièces indisponibles"
-#: common/models.py:2390
+#: common/models.py:2457
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:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Chercher des Emplacements"
-#: common/models.py:2397
+#: common/models.py:2464
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:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Rechercher les entreprises"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Rechercher les commandes de construction"
-#: common/models.py:2409
+#: common/models.py:2476
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:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Rechercher des bons de commande"
-#: common/models.py:2415
+#: common/models.py:2482
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:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Exclure les bons de commande inactifs"
-#: common/models.py:2422
+#: common/models.py:2489
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:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Rechercher les bons de commande"
-#: common/models.py:2429
+#: common/models.py:2496
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:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Exclure les bons de commande inactives"
-#: common/models.py:2436
+#: common/models.py:2503
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:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Rechercher les commandes retournées"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Résultats de l'aperçu de la recherche"
-#: common/models.py:2458
+#: common/models.py:2525
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:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Recherche Regex"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
-msgstr ""
+msgstr "Recherche de mot complet"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Afficher la quantité dans les formulaires"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Afficher la quantité disponible dans certains formulaires"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "La touche Echap ferme les formulaires"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Utilisez la touche Echap pour fermer les formulaires modaux"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Barre de navigation fixe"
-#: common/models.py:2489
+#: common/models.py:2556
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:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Format de date"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Format préféré pour l'affichage des dates"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Planification des pièces"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Afficher les informations de planification des pièces"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventaire des pièces"
-#: common/models.py:2516
+#: common/models.py:2583
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr ""
-#: common/models.py:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Longueur de la chaîne dans les Tableau"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr "Longueur maximale des chaînes affichées dans les tableaux"
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
-msgstr ""
+msgstr "Recevoir des rapports d'erreur"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Utilisateur"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Prix"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Ce webhook (lien de rappel HTTP) est-il actif"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr "Jeton"
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Jeton d'accès"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Confidentiel"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "ID message"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Identifiant unique pour ce message"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr "Hôte"
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Hôte à partir duquel ce message a été reçu"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Entête"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "En-tête de ce message"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Corps"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Corps de ce message"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Endpoint à partir duquel ce message a été reçu"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "Le travail sur ce message est-il terminé ?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr "Id"
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Titre"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Lien"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publié"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Auteur"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Résumé"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Lu"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "Cette nouvelle a-t-elle été lue ?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Fichier image"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbole"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr "Symbole d'unité facultatif"
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Définition"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr "Définition de l'unité"
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Pièce jointe"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Fichier manquant"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Lien externe manquant"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Sélectionnez un fichier à joindre"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Commentaire"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr "Étiquette"
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr "Analyse du code-barres"
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr "Données"
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr "Données du code-barres"
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr "Utilisateur qui a scanné le code-barres"
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr "Date et heure du scan de code-barres"
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Contexte"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr "Réponse"
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Résultat"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Nouveau {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
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:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr "{verbose_name} annulé"
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr "Une commande qui vous est assignée a été annulée"
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr "Articles reçus"
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr "Des articles d'un bon de commande ont été reçus"
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr "Erreur déclenchée par le plugin"
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr "En cours d'exécution"
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr "Tâches en attente"
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr "Tâches planifiées"
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr "Tâches échouées"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr "ID de la tâche"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr "ID unique de la tâche"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr "Verrouillé"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr "Heure verrouillé"
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr "Nom de la tâche"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr "Fonction"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr "Nom de la fonction"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr "Arguments"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr "Arguments tâche"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr "Mots-clés Arguments"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr "Mots-clés arguments tâche"
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Nom du fichier"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr "Champs Correspondants"
msgid "Match Items"
msgstr "Articles correspondants"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Les champs correspondants ont échoué"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Pièces importées"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr "La pièce interne est active"
msgid "Supplier is Active"
msgstr "Le fournisseur est actif"
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Société"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Entreprises"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Description de la société"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "Description de la société"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Site web"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Site Web de la société"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Numéro de téléphone"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Numéro de téléphone de contact"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Adresse e-mail de contact"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Contact"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Point de contact"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Lien externe vers les informations de l'entreprise"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr "Cette entreprise est-elle active ?"
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "Vendez-vous des objets à cette entreprise?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "Est-ce que vous achetez des articles à cette entreprise?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Cette entreprise fabrique-t-elle des pièces?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Devise par défaut utilisée pour cette entreprise"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Adresse"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr "Adresses"
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr "Sélectionner une entreprise"
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr "Intitulé de l'adresse"
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr "Titre décrivant la saisie de l'adresse"
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr "Adresse principale"
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr "Sélectionner comme adresse principale"
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr "Ligne 1"
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr "Adresse"
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr "Ligne 2"
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr "Seconde ligne d'adresse"
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr "Code postal"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr "Ville / Région"
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr "Code postal Ville / Région"
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr "État / Province"
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr "État ou province"
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr "Pays"
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr "Pays"
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr "Notes du livreur"
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr "Instructions pour le livreur"
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr "Notes pour la livraison interne"
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr "Notes internes pour la livraison"
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr "Lien vers les informations de l'adresse (externe)"
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Pièces du fabricant"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Fabricant"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Sélectionner un fabricant"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Nom du paramètre"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Valeur"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Valeur du paramètre"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Unités"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Unités du paramètre"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Pièce fournisseur"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
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:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Fournisseur"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Sélectionner un fournisseur"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Unité de gestion des stocks des fournisseurs"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Sélectionner un fabricant"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "Lien de la pièce du fournisseur externe"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Description de la pièce du fournisseur"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "coût de base"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Frais minimums (par exemple frais de stock)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Conditionnement de l'article"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Nombre de paquet"
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "plusieurs"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Commande multiple"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Quantité disponible auprès du fournisseur"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Disponibilité mise à jour"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Date de dernière mise à jour des données de disponibilité"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Devise par défaut utilisée pour ce fournisseur"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "En Stock"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Créer une commande d'achat"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Éditer les informations sur la société"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Editer la société"
@@ -4605,11 +4784,12 @@ msgstr "Supprimer la société"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Télécharger l'image depuis l'URL"
msgid "Delete image"
msgstr "Supprimer image"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Client"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Téléphone"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Supprimer"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ msgstr "Stock fournisseur"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Nouvelle commande achat"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ msgstr "Stock affecté"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Fabricants"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Article de la commande"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Modifier la pièce du fabricant"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Supprimer la pièce de fabricant"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Pièces Internes"
@@ -4837,8 +5017,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Articles en stock assignés"
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Dupliquer la pièce du fournisseur"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr "Supprimer la pièce du fournisseur"
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Supprimer la pièce du fournisseur"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Aucune information de fournisseur disponible"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Stock de pièces du fournisseur"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Créer un nouvel article de stock"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Nouvel article de stock"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Commandes de pièces du fournisseur"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Information sur les prix"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Ajouter un prix de rupture"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Éléments en stock"
@@ -5022,99 +5203,99 @@ msgstr "Nouveaux Clients"
msgid "New Company"
msgstr "Nouvelle Entreprise"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Placé"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr "Données"
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr "Erreurs"
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr "Valide"
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Inconnu"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr "Impression"
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr "Aucun média"
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr "Déconnecté"
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr "Imprimante Etiquette"
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr "Impression directe des étiquettes pour divers articles."
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr "Emplacement Imprimante"
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr "Porter de l'imprimante sur un emplacement spécifique"
@@ -5307,79 +5488,75 @@ msgstr "Type de configuration"
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Prix Total"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr "Statut de la commande"
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Référence de commande"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr "Possède un Tarif"
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr "Aucun bon de commande correspondant n'a été trouvé"
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr "Commande"
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr "Commande Complétée"
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr "Commande En Attente"
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Commande d’achat"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr "Retour de commande"
@@ -5387,751 +5564,782 @@ msgstr "Retour de commande"
msgid "Total price for this order"
msgstr "Prix total pour cette commande"
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr "Devise de la commande"
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr "Description de la commande (facultatif)"
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Lien vers une page externe"
-#: order/models.py:310
+#: order/models.py:317
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:324
+#: order/models.py:331
msgid "Created By"
msgstr "Créé par"
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr "Utilisateur ou groupe responsable de cette commande"
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr "Adresse de l'entreprise pour cette commande"
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Référence de la commande"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Statut de la commande d'achat"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Société de laquelle les articles sont commandés"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Référence du fournisseur"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Code de référence de la commande fournisseur"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "reçu par"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Date d'émission"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Date d'émission de la commande"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Date à laquelle la commande a été complété"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "La quantité doit être un nombre positif"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Société à laquelle les articles sont vendus"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Référence client "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Nom de l’expédition"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "expédié par"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
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:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Nombre d'élement"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr "Contexte"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Prix unitaire"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr "supprimé"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Pièce fournisseur"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Reçu"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Nombre d'éléments reçus"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Prix d'achat"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Prix d'achat unitaire"
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr "Où l'Acheteur veut-il stocker cet article ?"
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
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:1642
+#: order/models.py:1658
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:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Prix de vente"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Prix de vente unitaire"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Expédié"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Quantité expédiée"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Date d'expédition"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr "Date de Livraison"
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Vérifié par"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Utilisateur qui a vérifié cet envoi"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Envoi"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Numéro d'expédition"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "N° de suivi"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Information de suivi des colis"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "N° de facture"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Numéro de référence de la facture associée"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "Le colis a déjà été envoyé"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "L'expédition n'a pas d'articles en stock alloués"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "L'article de stock n'a pas été assigné"
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr "Impossible d'allouer le stock à une ligne sans pièce"
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "La quantité d'allocation ne peut pas excéder la quantité en stock"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Ligne"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Article"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr "Statut du retour de commande"
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr "ID de commande"
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "La commande ne peut pas être annulée"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "La commande n'est pas ouverte"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Devise du prix d'achat"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
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:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Code-barres"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Le code-barres est déjà utilisé"
-#: order/serializers.py:747
+#: order/serializers.py:831
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:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Devise du prix de vente"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Entrez les numéros de série à allouer"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
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:1544
-msgid "The following serial numbers are already allocated"
-msgstr "Les numéros de série suivants sont déjà alloués"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr "Les numéros de série suivants ne sont pas disponibles"
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Perdu"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Retourné"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "En Cours"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Retour"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Réparer"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Remplacer"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Remboursement"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Refuser"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Modifier la commande"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Annuler la commande"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Marquer la commande comme complète"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Finaliser la commande"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Description de la commande"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Incomplet"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr "Dupliquer la sélection"
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Articles reçus"
msgid "Order Notes"
msgstr "Notes de commande"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Référence client"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr "Coût total"
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr "Détails de la Commande"
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr "Expéditions en attente"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Actions"
@@ -6383,39 +6591,40 @@ msgstr "Nouvelle Expédition"
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Prix introuvable"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr "Révision"
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Mots-clés"
@@ -6427,7 +6636,7 @@ msgstr "Image pièce"
msgid "Category ID"
msgstr "ID catégorie"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "Nom catégorie"
@@ -6440,11 +6649,11 @@ msgstr "ID Emplacement par défaut"
msgid "Default Supplier ID"
msgstr "ID Fournisseur par défaut"
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr "Variante de"
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr "Stock Minimum"
@@ -6452,23 +6661,23 @@ msgstr "Stock Minimum"
msgid "Used In"
msgstr "Utilisé pour"
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr "Construction"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr "Coût minimal"
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr "Coût maximal"
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr "Chemin catégorie"
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr "Prix Minimum"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr "Prix Maximum"
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Catégorie"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr "Utilise"
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Emplacement par défaut"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Stock total"
@@ -6641,789 +6854,789 @@ msgstr "Stock total"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Catégorie de composant"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Catégories de composants"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr "Structurel"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Mots-clés par défaut"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr "IPN dupliqué non autorisé dans les paramètres de la pièce"
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Nom de l'article"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Catégorie de la pièce"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr "Est-ce que cette pièce est active ?"
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr "Création Utilisateur"
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr "Propriétaire responsable de cette pièce"
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr "Ventes multiples"
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr "Coût minimum de vente"
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "Notes additionnelles"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr "Nom de test"
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Activé"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr "Requis"
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr "Valeur requise"
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valeur par Défaut"
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Surplus"
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr "Validée"
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr "Devise d'achat de l'item"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Copier l'image"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Copier les paramètres"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Échec de la vérification du processus d'arrière-plan"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7809,7 +8034,7 @@ msgstr "Notification de stock faible"
#: part/tasks.py:39
#, python-brace-format
msgid "The available stock for {part.name} has fallen below the configured minimum level"
-msgstr ""
+msgstr "Le stock disponible pour {part.name}, est tombé en dessous du niveau minimum configuré"
#: part/templates/part/bom.html:6
msgid "You do not have permission to edit the BOM."
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr "Prise d'inventaire"
@@ -8093,142 +8318,146 @@ msgstr "Sélectionner un format de fichier"
msgid "Part List"
msgstr "Liste des composants"
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr "Vous êtes abonné aux notifications pour cette pièce"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "S'abonner aux notifications de cette pièce"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Impression étiquette"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Modifier la pièce"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
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:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr "Dernier numéro de série"
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "Rechercher un numéro de série"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Modifier"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "Aucune action spécifiée"
msgid "No matching action found"
msgstr "Aucune action correspondante trouvée"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Aucune correspondance trouvée pour les données du code-barres"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Correspondance trouvée pour les données du code-barres"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr "Non du Plugin"
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr "Extension Intégrée"
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr "Extension"
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr "Activer le panneau de pièces"
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr "Identifiant de version du plugin. Laissez vide pour la dernière version."
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr "Aucun objet valide n'a été fourni au modèle"
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Modèle de nom de fichier"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Filtres"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Largeur [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Largeur de l'étiquette, spécifiée en mm"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Hauteur [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Hauteur de l'étiquette, spécifiée en mm"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr "Extrait "
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr "Elément"
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr "Résultat"
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr "Numéro de série"
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr "Propriétaire"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr "Sélectionner un propriétaire"
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
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:721
+#: stock/models.py:798
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:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr "Numéro de série pour cet article"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-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:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr "La quantité ne correspond pas au nombre de numéros de série"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "Les numéros de série existent déjà"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr "Entrez le nombre d'articles en stock à sérialiser"
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr "Entrez les numéros de série pour les nouveaux articles"
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
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:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "Les numéros de série existent déjà"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Rejeté"
msgid "Quarantined"
msgstr "En quarantaine"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Ancienne entrée de suivi de stock"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Article en stock créé"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Article de stock modifié"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Numéro de série attribué"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Stock comptabilisé"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Stock ajouté manuellement"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Stock supprimé manuellement"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Emplacement modifié"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Stock mis à jour"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Installé dans l'assemblage"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Retiré de l'assemblage"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Composant installé"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Composant retiré"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Séparer de l'élément parent"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Fractionner l'élément enfant"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Articles de stock fusionnés"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Converti en variante"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "La sortie de l'ordre de construction a été créée"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Sortie de l'ordre de construction terminée"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "La sortie de l'ordre de construction a été refusée"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Consommé par ordre de construction"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Commandes expédiées vs. ventes"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Livraisons reçues vs. commandes réalisées"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Livraisons retournées vs. commandes retournées"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Envoyé au client"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Retourné par le client"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Assemblage"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "page précédente"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr "Accéder au numéro de série précédent"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr "Accéder au numéro de série suivant"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ 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:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr "Autorisation refusée"
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Supprimer"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr "Non vérifiée"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr "Principale"
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr "Ajouter une pièce jointe"
msgid "Barcode Identifier"
msgstr "Identifiant du code-barres"
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr "Redémarrage du serveur nécessaire"
-#: templates/base.html:106
+#: templates/base.html:105
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:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr "Contactez votre administrateur système pour plus d'informations"
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr "Quantité requise"
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr "Dernier numéro de série"
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr "Ajouter"
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
msgid "An error occurred while attempting to login via your social network account."
msgstr "Une erreur s’est produite en essayant de vous connecter via votre compte de réseau social."
-#: 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"
@@ -15029,7 +15340,7 @@ msgstr ""
#: templates/socialaccount/login.html:17
#, python-format
msgid "Sign In Via %(provider)s"
-msgstr ""
+msgstr "Se connecter via %(provider)s"
#: templates/socialaccount/login.html:19
#, python-format
@@ -15141,27 +15452,27 @@ msgstr "Oui"
msgid "No"
msgstr "Non"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Utilisateurs"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr "Sélectionner quels utilisateurs sont assignés à ce groupe"
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Informations personnelles"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Droits"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr "Dates importantes"
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "Droit défini"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Groupe"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Vue"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Droit de voir des éléments"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Droit d'ajouter des éléments"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Modifier"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Droit de modifier des élément"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Droit de supprimer des éléments"
diff --git a/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po
index 5a25c0d5ba..6090f067e5 100644
--- a/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/he/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: he\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:502
-msgid "User does not have permission to view this model"
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
msgstr ""
-#: InvenTree/conversion.py:160
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
+msgid "User does not have permission to view this model"
+msgstr "למשתמש אין הרשאה לצפות במוזל הזה"
+
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
-msgstr ""
+msgstr "סופקה יחידה שלא קיימת ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
-msgstr ""
+msgstr "לא צוין ערך"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr ""
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "הזן תאריך סיום"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr ""
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr ""
@@ -132,415 +140,427 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr ""
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr ""
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "מספרים סידוריים לא נמצאו"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr ""
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr ""
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
-msgid "Arabic"
-msgstr ""
-
-#: InvenTree/locales.py:19
-msgid "Bulgarian"
-msgstr ""
-
#: InvenTree/locales.py:20
-msgid "Czech"
-msgstr ""
+msgid "Arabic"
+msgstr "ערבית"
#: InvenTree/locales.py:21
-msgid "Danish"
-msgstr ""
+msgid "Bulgarian"
+msgstr "בולגרית"
#: InvenTree/locales.py:22
+msgid "Czech"
+msgstr "צ'כית"
+
+#: InvenTree/locales.py:23
+msgid "Danish"
+msgstr "דנית"
+
+#: InvenTree/locales.py:24
msgid "German"
msgstr "גרמנית"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "יוונית"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "אנגלית"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "ספרדית"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "ספרדית (מקסיקנית)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "צרפתית"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "עברית"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "איטלקית"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "יפנית"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "קוריאנית"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "הולנדית"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "נורווגית"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "פולנית"
-#: InvenTree/locales.py:41
-msgid "Portuguese"
-msgstr ""
-
-#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
-msgstr ""
-
-#: InvenTree/locales.py:43
-msgid "Romanian"
-msgstr ""
-
#: InvenTree/locales.py:44
+msgid "Portuguese"
+msgstr "פורטוגזית"
+
+#: InvenTree/locales.py:45
+msgid "Portuguese (Brazilian)"
+msgstr "פורטוגזית (ברזילאית)"
+
+#: InvenTree/locales.py:46
+msgid "Romanian"
+msgstr "רומנית"
+
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "רוסית"
-#: InvenTree/locales.py:45
-msgid "Slovak"
-msgstr ""
-
-#: InvenTree/locales.py:46
-msgid "Slovenian"
-msgstr ""
-
-#: InvenTree/locales.py:47
-msgid "Serbian"
-msgstr ""
-
#: InvenTree/locales.py:48
+msgid "Slovak"
+msgstr "סלובקית"
+
+#: InvenTree/locales.py:49
+msgid "Slovenian"
+msgstr "סלובנית"
+
+#: InvenTree/locales.py:50
+msgid "Serbian"
+msgstr "סרבית"
+
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "שוודית"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "תאילנדית"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "טורקית"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
-msgstr ""
+msgstr "אוקראינית"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "ווייטנאמית"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
-msgstr ""
+msgstr "סינית (פשוטה)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
-msgstr ""
+msgstr "סינית (מסורתית)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
-msgstr ""
+msgstr "אימייל"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
-msgstr ""
+msgstr "שגיאה בהפעלת אימות הפלאגין"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
-msgstr ""
+msgstr "Metadata must be a python dict object"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
-msgstr ""
+msgstr "מטא נתונים של תוסף"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
-msgstr ""
+msgstr "שדה מטא נתונים של JSON, לשימוש על ידי תוספים חיצוניים"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
-msgstr ""
+msgstr "דפוס מעוצב בצורה לא נכונה"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
-msgstr ""
+msgstr "צוין מפתח פורמט לא ידוע"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
-msgstr ""
+msgstr "חסר מפתח פורמט נדרש"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
-msgstr ""
+msgstr "שדה הפניה לא יכול להיות ריק"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
-msgstr ""
+msgstr "הפניה חייבת להתאים לדפוס הנדרש"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
-msgstr ""
+msgstr "מספר האסמכתה גדול מדי"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
-msgstr ""
+msgstr "שמות כפולים אינם יכולים להתקיים תחת אותו אב"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "בחירה שגויה"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "שם"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "תיאור"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "תיאור (לא חובה)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
-msgstr ""
+msgstr "נתיב"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
-msgstr ""
+msgstr "הערות סימון (אופציונלי)"
+
+#: InvenTree/models.py:959
+msgid "Barcode Data"
+msgstr "נתוני ברקוד"
#: InvenTree/models.py:960
-msgid "Barcode Data"
-msgstr ""
-
-#: InvenTree/models.py:961
msgid "Third party barcode data"
-msgstr ""
+msgstr "נתוני ברקוד של צד שלישי"
+
+#: InvenTree/models.py:966
+msgid "Barcode Hash"
+msgstr "ברקוד Hash"
#: InvenTree/models.py:967
-msgid "Barcode Hash"
-msgstr ""
-
-#: InvenTree/models.py:968
msgid "Unique hash of barcode data"
-msgstr ""
+msgstr "Hash ייחודי של נתוני ברקוד"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
+msgstr "נמצא ברקוד קיים"
+
+#: InvenTree/models.py:1112
+msgid "Task Failure"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
-msgstr ""
+msgstr "שגיאת שרת"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
-msgstr ""
+msgstr "נרשמה שגיאה על ידי השרת."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "המספר חייב להיות תקין"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
-msgstr ""
+msgstr "מטבע"
#: InvenTree/serializers.py:103
msgid "Select currency from available options"
-msgstr ""
+msgstr "בחר מטבע מהאפשרויות הזמינות"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
-msgstr ""
+msgstr "שם משתמש"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
-msgstr ""
+msgstr "שם פרטי"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "קוד מטבע לא מאושר"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "ערוך מידע אודות המשתמש"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "הגדר סיסמא"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "הסיסמאות מוכרחות להיות תואמות"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "מידע אודות המערכת"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "מקור הבנייה"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "רכיב"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "מקט"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "רכיב"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "בחר רכיב לבנייה"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "כמות בניה"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "קישור חיצוני"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "כמות"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "מספרים סידוריים"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "בהמתנה"
@@ -1722,21 +1750,21 @@ msgstr "בהמתנה"
msgid "Production"
msgstr "ייצור"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "מבוטל"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "הושלם"
@@ -1744,165 +1772,162 @@ msgstr "הושלם"
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "משתמש"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "קישור"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "קובץ מצורף"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "קובץ חסר"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "חסר קישור חיצוני"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "בחר קובץ לצירוף"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "הערה"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "שם קובץ"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "מוקם"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "נשלח"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "אבד"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "הוחזר"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "לא פורטה הפעולה"
msgid "No matching action found"
msgstr "פעולה מבוקשת לא נמצאה"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "נדחה"
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "מיקום שונה"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "נשלח ללקוח"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "הוחזר מלקוח"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po
index 4f6ce2209a..d62e2e44f8 100644
--- a/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/hi/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Language: hi_IN\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: hi\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr ""
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr ""
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "तारीख दर्ज करें"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr ""
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr ""
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr ""
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr ""
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "कनेक्शन त्रुटि"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr ""
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr ""
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr ""
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr ""
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr ""
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr ""
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr ""
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr ""
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr ""
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
-
-#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/locales.py:39
-msgid "Norwegian"
+msgid "Lithuanian"
msgstr ""
#: InvenTree/locales.py:40
-msgid "Polish"
+msgid "Latvian"
msgstr ""
#: InvenTree/locales.py:41
-msgid "Portuguese"
+msgid "Dutch"
msgstr ""
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
+msgid "Norwegian"
msgstr ""
#: InvenTree/locales.py:43
-msgid "Romanian"
+msgid "Polish"
msgstr ""
#: InvenTree/locales.py:44
-msgid "Russian"
+msgid "Portuguese"
msgstr ""
#: InvenTree/locales.py:45
-msgid "Slovak"
+msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/locales.py:46
-msgid "Slovenian"
+msgid "Romanian"
msgstr ""
#: InvenTree/locales.py:47
-msgid "Serbian"
+msgid "Russian"
msgstr ""
#: InvenTree/locales.py:48
-msgid "Swedish"
+msgid "Slovak"
msgstr ""
#: InvenTree/locales.py:49
-msgid "Thai"
+msgid "Slovenian"
msgstr ""
#: InvenTree/locales.py:50
-msgid "Turkish"
+msgid "Serbian"
msgstr ""
#: InvenTree/locales.py:51
-msgid "Ukrainian"
+msgid "Swedish"
msgstr ""
#: InvenTree/locales.py:52
-msgid "Vietnamese"
+msgid "Thai"
msgstr ""
#: InvenTree/locales.py:53
-msgid "Chinese (Simplified)"
+msgid "Turkish"
msgstr ""
#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "ई-मेल"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po
index fdd0b307b4..fef1bd4073 100644
--- a/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/hu/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: hu\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API funkciót nem találom"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Nincs jogosultságod az adatok megtekintéséhez"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Érvénytelen mennyiségi egység ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Nincs érték megadva"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "{original} átváltása {unit}-ra sikertelen"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "Hibás mennyiség"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Nem megfelelő mennyiség"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Hibás mennyiség ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "A hiba részleteit megtalálod az admin panelen"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Dátum megadása"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Megjegyzések"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, 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:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "A megadott érték nem felel meg a szükséges mintának: "
@@ -132,397 +140,409 @@ msgstr "MFA regisztráció nincs engedélyezve."
msgid "The provided primary email address is not valid."
msgstr "A megadott elsődleges email cím nem valós."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "A megadott email domain nincs jóváhagyva."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Regisztráció le van tiltva."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Nem megfelelő mennyiség"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Üres sorozatszám"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplikált sorozatszám"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Hibás tartomány: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Csoport tartomány {group} több mint az engedélyezett ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Hibás csoport-sor: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Nem található sorozatszám"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Az egyedi sorozatszámok számának ({len(serials)}) meg kell egyeznie a mennyiséggel ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
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.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Csatlakozási hiba"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "A kiszolgáló érvénytelen státuszkóddal válaszolt"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Kivétel történt"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "A kiszolgáló érvénytelen Content-Length értéket adott"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "A kép mérete túl nagy"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "A kép letöltés meghaladja a maximális méretet"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "A kiszolgáló üres választ adott"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "A megadott URL nem egy érvényes kép fájl"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Arab"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bolgár"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Cseh"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Dán"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Német"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Görög"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Angol"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spanyol"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spanyol (Mexikói)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Észt"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Fárszi/Perzsa"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finn"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Francia"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Héber"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hindi"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Magyar"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Olasz"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japán"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Koreai"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Litván"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Holland"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norvég"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Lengyel"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugál"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugál (Brazíliai)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Román"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Orosz"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Szlovák"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Szlovén"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Szerb"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Svéd"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Tháj"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Török"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ukrán"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnámi"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Kínai (egyszerűsített)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Kínai (Hagyományos)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] Bejelentkezés"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Email"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Hiba a plugin validálása közben"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "A meta adatnak egy python dict objektumnak kell lennie"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Plugin meta adatok"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON meta adat mező, külső pluginok számára"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Helytelenül formázott minta"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Ismeretlen formátum kulcs lett megadva"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Hiányzó formátum kulcs"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Az azonosító mező nem lehet üres"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Az azonosítónak egyeznie kell a mintával"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Azonosító szám túl nagy"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Érvénytelen választás"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Név"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Leírás"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Leírás (opcionális)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Elérési út"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Markdown megjegyzések (opcionális)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Vonalkód adat"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Harmadik féltől származó vonalkód adat"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Vonalkód hash"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Egyedi vonalkód hash"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Létező vonalkód"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Kiszolgálóhiba"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "A kiszolgáló egy hibaüzenetet rögzített."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Érvényes számnak kell lennie"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Pénznem"
msgid "Select currency from available options"
msgstr "Válassz pénznemet a lehetőségek közül"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Felhasználónév"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Keresztnév"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "A felhasználó keresztneve"
@@ -552,30 +572,30 @@ msgstr "Vezetéknév"
msgid "Last name of the user"
msgstr "A felhasználó vezetékneve"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "A felhasználó e-mail címe"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Személyzet"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
-msgstr ""
+msgstr "Van-e a felhasználónak személyzeti jogosultsága"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Rendszergazda"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
-msgstr ""
+msgstr "A felhasználó rendszergazda-e"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr "Aktív"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Aktív a felhasználói fiók"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Önnek nincs joga változtatni ezen a felhasználói szerepkörön."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Csak a superuser-ek hozhatnak létre felhasználókat"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "A fiókod sikeresen létrejött."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Kérlek használd a jelszó visszállítás funkciót a belépéshez"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Üdvözlet az InvenTree-ben"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Érvénytelen érték"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Adat fájl"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Fájl kiválasztása feltöltéshez"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Nem támogatott fájltípus"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Fájl túl nagy"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Nem találhatók oszlopok a fájlban"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Nincsenek adatsorok a fájlban"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Nincs adatsor megadva"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Nincs adat oszlop megadva"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Szükséges oszlop hiányzik: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Duplikált oszlop: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Távoli kép"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "A távoli kép URL-je"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Képek letöltése távoli URL-ről nem engedélyezett"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Háttér folyamat ellenőrzés sikertelen"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "Email backend nincs beállítva"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "InvenTree rendszer állapotának ellenőrzése sikertelen"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Ismeretlen adatbázis"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Érvénytelen fizikai mértékegység"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Érvénytelen pénznem kód"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Túlszállítás nem lehet negatív"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Túlszállítás nem lehet több mint 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Érvénytelen érték a túlszállításra"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Felhasználói információ módosítása"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Jelszó beállítása"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "A jelszavaknak egyeznie kell"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Rossz jelszó lett megadva"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Rendszerinformáció"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Verzió információk"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr "Lépcsőzetes"
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Szülő gyártás"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr "Változatokkal együtt"
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr "Szülő Gyártás"
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr "Hozzám rendelt"
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Kiállította"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
-msgstr ""
+msgstr "Hozzárendelve"
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "A gyártást be kell fejezni a törlés előtt"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Fogyóeszköz"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Opcionális"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Gyártmány"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Követett"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
-msgstr ""
+msgstr "Ellenőrizhető"
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Lefoglalva"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Lefoglalva"
msgid "Available"
msgstr "Elérhető"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Alkatrész"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Gyártási utasítás"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Gyártási utasítás"
msgid "Build Orders"
msgstr "Gyártási utasítások"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
-msgstr ""
+msgstr "Az alkatrészjegyzék még nincs jóváhagyva"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
-msgstr ""
+msgstr "Nem lehet inaktív alkatrészre Gyártást kezdeményezni"
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
-msgstr ""
+msgstr "Nem lehet lezáratlan alkatrészre Gyártást kezdeményezni"
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Hibás választás a szülő gyártásra"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr "Meg kell adni felelős felhasználót vagy csoportot"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "Gyártási rendelés alkatrész nem változtatható"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Gyártási utasítás azonosító"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Azonosító"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Gyártás rövid leírása (opcionális)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Alkatrész"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Válassz alkatrészt a gyártáshoz"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Vevői rendelés azonosító"
-#: build/models.py:284
+#: build/models.py:283
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:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Forrás hely"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Cél hely"
-#: build/models.py:302
+#: build/models.py:301
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:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Gyártási mennyiség"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Gyártandó készlet tételek száma"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Kész tételek"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Elkészült készlet tételek száma"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Gyártási állapot"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Gyártás státusz kód"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Batch kód"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Batch kód a gyártás kimenetéhez"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Létrehozás dátuma"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Befejezés cél dátuma"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Befejezés dátuma"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "elkészítette"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Indította"
-#: build/models.py:362
+#: build/models.py:361
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:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Felelős"
-#: build/models.py:371
+#: build/models.py:370
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:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Külső link"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Link külső URL-re"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Priorítás"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Gyártási utasítás priorítása"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Projektszám"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Projekt kód a gyártáshoz"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr "A gyártási foglalások teljesítése háttérfeladat elvégzése nem sikerült"
@@ -1110,611 +1129,620 @@ msgstr "A {build} gyártási utasítás elkészült"
msgid "A build order has been completed"
msgstr "Gyártási utasítás elkészült"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr "Egyedi követésre jelölt alkatrészeknél kötelező sorozatszámot megadni"
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Nincs gyártási kimenet megadva"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Gyártási kimenet már kész"
-#: build/models.py:973
+#: build/models.py:975
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:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Mennyiségnek nullánál többnek kell lennie"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "A mennyiség nem lehet több mint a gyártási mennyiség"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr "A {serial} gyártási kimenet nem felelt meg az összes kötelező teszten"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
-msgstr ""
+msgstr "Gyártási Rendelés Sor Tétel"
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Gyártás objektum"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Mennyiség"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Gyártáshoz szükséges mennyiség"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Készlet túlfoglalva"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie"
-#: build/models.py:1616
+#: build/models.py:1640
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:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Készlet tétel"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Forrás készlet tétel"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Beépítés ebbe"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Cél készlet tétel"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
-msgstr ""
+msgstr "Gyártási Szint"
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Alkatrész neve"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr "Projekt kód címke"
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr "Leszármazott Gyártások Létrehozása"
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr "Leszármazott Gyártások létrehozása automatikusan"
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Gyártás kimenet"
-#: build/serializers.py:184
+#: build/serializers.py:231
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:188
+#: build/serializers.py:235
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:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Ez a gyártási kimenet már elkészült"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Ez a gyártási kimenet nincs teljesen lefoglalva"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Add meg a mennyiséget a gyártás kimenetéhez"
-#: build/serializers.py:291
+#: build/serializers.py:338
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:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Sorozatszámok"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Add meg a sorozatszámokat a gyártás kimenetéhez"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Hely"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr "Legyártott készlet helye"
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Sorozatszámok automatikus hozzárendelése"
-#: build/serializers.py:331
+#: build/serializers.py:378
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:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr "Egyedi követésre jelölt alkatrészeknél kötelező sorozatszámot megadni"
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
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:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "A gyártási kimenetek listáját meg kell adni"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Selejtezet gyártási kimenetek helye"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Foglalások törlése"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Selejtezett kimenetek foglalásainak felszabadítása"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Selejtezés oka"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "A kész gyártási kimenetek helye"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Állapot"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Hiányos foglalás elfogadása"
-#: build/serializers.py:542
+#: build/serializers.py:586
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:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr "Lefoglalt készlet felhasználása"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr "Az összes ehhez a gyártáshoz lefoglalt készlet felhasználása"
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Befejezetlen kimenetek törlése"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "A nem befejezett gyártási kimenetek törlése"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Nem engedélyezett"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Gyártásban fel lett használva"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Foglalás felszabadítása a készre jelentés előtt"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Túlfoglalt készlet"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Pár készlet tétel túl lett foglalva"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Kiosztatlanok elfogadása"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "A szükséges készlet nem lett teljesen lefoglalva"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Befejezetlenek elfogadása"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Szükséges gyártási mennyiség nem lett elérve"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
-msgstr ""
+msgstr "A Gyártásnak nyitott leszármazott Gyártása van"
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
-msgstr ""
+msgstr "A Gyártásnak folyamatban kell lennie"
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "A gyártási utasítás befejezetlen kimeneteket tartalmaz"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Gyártás sor"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Gyártás kimenet"
-#: build/serializers.py:836
+#: build/serializers.py:880
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:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Gyártás sor tétel"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "A tételnek kell legyen készlete"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Rendelkezésre álló mennyiség ({q}) túllépve"
-#: build/serializers.py:955
+#: build/serializers.py:999
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:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "A lefoglalandó tételeket meg kell adni"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Készlet hely ahonnan az alkatrészek származnak (hagyd üresen ha bárhonnan)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Hely kizárása"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Készlet tételek kizárása erről a kiválasztott helyről"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Felcserélhető készlet"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "A különböző helyeken lévő készlet egyenrangúan felhasználható"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Készlet helyettesítés"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Helyettesítő alkatrészek foglalásának engedélyezése"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Opcionális tételek"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Opcionális tételek lefoglalása a gyártáshoz"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr "Nem sikerült az automatikus lefoglalás feladatot elindítani"
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
-msgstr ""
+msgstr "Beszállítói Cikkszám"
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Gyártói cikkszám"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr "Hely neve"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
-msgstr ""
+msgstr "Gyártási Hivatkozás"
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
-msgstr ""
+msgstr "Alkatrészjegyzék Hivatkozás"
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Csomagolás"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "Alkatrész ID"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr "Alkatrész IPN"
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Alkatrész leírása"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
-msgstr ""
+msgstr "Alkatrészjegyzék Cikk Azonosító"
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
-msgstr ""
+msgstr "Alkatrészjegyzék Alkatrész Név"
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Sorozatszám"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr "Lefoglalt mennyiség"
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr "Elérhető mennyiség"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
-msgstr ""
+msgstr "Alkatrész Kategória Azonosító"
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
-msgstr ""
+msgstr "Alkatrész kategória Neve"
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Követésre kötelezett"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
-msgstr ""
+msgstr "Örökölt"
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr "Változatok"
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Alkatrészjegyzék tétel"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Lefoglalt készlet"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "Rendelve"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr "Gyártásban"
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr "Elérhető készlet"
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr "Külső raktárkészlet"
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Elérhető készlet"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr "Elérhető Helyettesítő Készlet"
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr "Elérhető Készlet Változatokból"
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Függőben"
@@ -1723,21 +1751,21 @@ msgstr "Függőben"
msgid "Production"
msgstr "Folyamatban"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr "Felfüggesztve"
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Törölve"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Kész"
@@ -1745,165 +1773,162 @@ msgstr "Kész"
msgid "Stock required for build order"
msgstr "A gyártási utasításhoz készlet szükséges"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Késésben lévő gyártás"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, 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
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Alkatrész bélyegkép"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Vonalkód műveletek"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "QR kód megjelenítése"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Vonalkód leválasztása"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Vonalkód hozzárendelése"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Nyomtatási műveletek"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Gyártási riport nyomtatása"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Gyártási műveletek"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Gyártás szerkesztése"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Gyártás másolása"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
-msgstr ""
+msgstr "Gyártás felfüggesztése"
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Gyártás törlése"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Gyártás törlése"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
-msgstr ""
+msgstr "Gyártás Kiadása"
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Gyártás befejezése"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Gyártás leírása"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Ehhez a gyártási utasításhoz nem készült kimenet"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Gyártási utasítás elkészültnek jelölhető"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Befejezetlen gyártási kimenetek vannak"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Szükséges gyártási mennyiség még nincs meg"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Cél dátum"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Ez a gyártás %(target)s-n volt esedékes"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1911,49 +1936,50 @@ msgstr "Ez a gyártás %(target)s-n volt esedékes"
msgid "Overdue"
msgstr "Késésben"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Befejezett kimenetek"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Vevői rendelés"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Prioritás"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
-msgstr ""
+msgstr "Gyártási Rendelés Kiadása"
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
-msgstr ""
+msgstr "Kiadja ezt a Gyártási Rendelést?"
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Gyártási utasítás törlése"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Gyártási utasítás QR kódja"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Vonalkód gyártáshoz rendelése"
@@ -1969,8 +1995,9 @@ 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:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Cél"
@@ -1982,23 +2009,24 @@ msgstr "A cél hely nincs megadva"
msgid "Allocated Parts"
msgstr "Lefoglalt alkatrészek"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Köteg"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Létrehozva"
@@ -2006,8 +2034,8 @@ 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Kész"
@@ -2022,7 +2050,7 @@ msgstr "Alárendelt gyártások"
#: build/templates/build/detail.html:177
msgid "Build Order Line Items"
-msgstr ""
+msgstr "Gyártási Rendelés Sor Tétel"
#: build/templates/build/detail.html:181
msgid "Deallocate stock"
@@ -2053,7 +2081,7 @@ msgid "Order required parts"
msgstr "Szükséges alkatrészek rendelése"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Alkatrész rendelés"
@@ -2083,7 +2111,7 @@ msgstr "Befejezett gyártási kimenetek"
#: build/templates/build/detail.html:273
msgid "Build test statistics"
-msgstr ""
+msgstr "Gyártási Ellenőrzési Statisztika"
#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:27
#: company/templates/company/detail.html:229
@@ -2121,7 +2149,7 @@ 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:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2138,45 +2166,40 @@ msgstr "Befejezetlen kimenetek"
#: build/templates/build/sidebar.html:24
#: part/templates/part/part_sidebar.html:56
msgid "Test Statistics"
-msgstr ""
+msgstr "Ellenőrzési Statisztika"
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
-msgstr ""
+msgstr "Ez egy hivatkozás"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
-msgstr ""
+msgstr "Ez egy állomány"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
-msgstr ""
+msgstr "A felhasználó nem jogosult ezen mellékletek törlésére"
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
-msgstr ""
+msgstr "A felhasználó nem jogosult ezen melléklet törlésére"
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr "Érvénytelen valuta kód"
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr "Létező valuta kód"
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr "Hiányzó érvényes valuta kód"
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Nincsen plugin"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Nem támogatott fájl formátum: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fájl beolvasási hiba (hibás encoding)"
@@ -2193,1901 +2216,2057 @@ msgstr "Fájl beolvasási hiba (hibás dimenzió)"
msgid "Error reading file (data could be corrupted)"
msgstr "Fájl beolvasási hiba (sérült lehet)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Fájl"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Feltöltendő fájl kiválasztása"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Fájl"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "{name} fájl kiválasztása feltöltéshez"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Frissítve"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Legutóbbi frissítés időpontja"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr "A site URL blokkolva van a konfigurációban"
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Egyedi projektszám"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Projekt leírása"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr "A projektért felelős felhasználó vagy csoport"
-#: common/models.py:783
-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:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Beállítás értéke"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "A kiválasztott érték nem egy érvényes lehetőség"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "Az érték bináris kell legyen"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "Az érték egész szám kell legyen"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "Kulcs string egyedi kell legyen"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Nincs csoport"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Újraindítás szükséges"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Függőben levő migrációk"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr "Függőben levő adatbázis migrációk"
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Kiszolgáló példány neve"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "String leíró a kiszolgáló példányhoz"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Példány név használata"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Példány név használata a címsorban"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Verzió infók megjelenítésének tiltása"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Verzió infók megjelenítése csak admin felhasználóknak"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Cég neve"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Belső cégnév"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "Kiindulási URL"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "Kiindulási URL a kiszolgáló példányhoz"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Alapértelmezett pénznem"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Válassz alap pénznemet az ár számításokhoz"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr "Támogatott valuták"
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr "Támogatott valuták listája"
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr "Árfolyam frissítési gyakoriság"
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Milyen gyakran frissítse az árfolyamokat (nulla a kikapcsoláshoz)"
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "nap"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr "Árfolyam frissítő plugin"
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr "Kiválasztott árfolyam frissítő plugin"
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Letöltés URL-ről"
-#: common/models.py:1307
+#: common/models.py:1364
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:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Letöltési méret korlát"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Maximum megengedett letöltési mérete a távoli képeknek"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "Felhasznált User-agent az URL-ről letöltéshez"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr "Erős URL validáció"
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr "Sablon specifikáció igénylése az URL validálásnál"
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Megerősítés igénylése"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez"
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Fa mélység"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Frissítés keresés gyakorisága"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automatikus biztonsági mentés"
-#: common/models.py:1355
+#: common/models.py:1412
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:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Automata biztonsági mentés gyakorisága"
-#: common/models.py:1361
+#: common/models.py:1418
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:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Feladat törlési gyakoriság"
-#: common/models.py:1369
+#: common/models.py:1426
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:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Hibanapló törlési gyakoriság"
-#: common/models.py:1378
+#: common/models.py:1435
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:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Értesítés törlési gyakoriság"
-#: common/models.py:1387
+#: common/models.py:1444
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:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Vonalkód támogatás"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr "Vonalkód olvasó támogatás engedélyezése a web felületen"
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Vonalkód beadási késleltetés"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Webkamerás vonalkód olvasás"
-#: common/models.py:1408
+#: common/models.py:1477
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:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
-msgstr ""
+msgstr "Vonalkód Adat Megjelenítése"
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
-msgstr ""
+msgstr "Vonalkód adat megjelenítése a böngészőben szövegként"
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
-msgstr ""
+msgstr "Vonalkód Generáló Plugin"
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
-msgstr ""
+msgstr "Belső vonalkód generálásra használatos plugin"
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Alkatrész változatok"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Alkatrész változat vagy verziószám tulajdonság használata"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
-msgstr ""
+msgstr "Csak Összeállítás Verzió"
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
-msgstr ""
+msgstr "Csak összeállított alkatrészeknek lehessen verziója"
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
-msgstr ""
+msgstr "Lehessen törölni az Összeállításból"
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
-msgstr ""
+msgstr "Lehessen olyan alkatrészt törölni ami Összeállításban szerepel"
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr "IPN reguláris kifejezés"
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Többször is előforduló IPN engedélyezése"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Azonos IPN használható legyen több alkatrészre is"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "IPN szerkesztésének engedélyezése"
-#: common/models.py:1454
+#: common/models.py:1523
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:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Alkatrészjegyzék adatok másolása"
-#: common/models.py:1460
+#: common/models.py:1529
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:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Alkatrész paraméterek másolása"
-#: common/models.py:1466
+#: common/models.py:1535
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:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Alkatrész teszt adatok másolása"
-#: common/models.py:1472
+#: common/models.py:1541
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:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Kategória paraméter sablonok másolása"
-#: common/models.py:1478
+#: common/models.py:1547
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:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Sablon"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Alkatrészek alapból sablon alkatrészek legyenek"
-#: common/models.py:1490
+#: common/models.py:1559
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:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Összetevő"
-#: common/models.py:1496
+#: common/models.py:1565
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:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Beszerezhető"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Alkatrészek alapból beszerezhetők legyenek"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Értékesíthető"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Alkatrészek alapból eladhatók legyenek"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Alkatrészek alapból követésre kötelezettek legyenek"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Virtuális"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Alkatrészek alapból virtuálisak legyenek"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Importálás megjelenítése a nézetekben"
-#: common/models.py:1526
+#: common/models.py:1595
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:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Kapcsolódó alkatrészek megjelenítése"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Kezdeti készlet adatok"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Kezdeti beszállítói adatok"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Alkatrész név megjelenítés formátuma"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Formátum az alkatrész név megjelenítéséhez"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Alkatrész kategória alapértelmezett ikon"
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)"
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Csak választható mértékegységek"
-#: common/models.py:1566
+#: common/models.py:1635
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:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Áraknál használt tizedesjegyek min. száma"
-#: common/models.py:1574
+#: common/models.py:1643
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:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr "Áraknál használt tizedesjegyek max. száma"
-#: common/models.py:1587
+#: common/models.py:1656
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:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Beszállítói árazás használata"
-#: common/models.py:1600
+#: common/models.py:1669
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:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Beszerzési előzmények felülbírálása"
-#: common/models.py:1608
+#: common/models.py:1677
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:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Készlet tétel ár használata"
-#: common/models.py:1616
+#: common/models.py:1685
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:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Készlet tétel ár kora"
-#: common/models.py:1624
+#: common/models.py:1693
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:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Alkatrészváltozat árak használata"
-#: common/models.py:1632
+#: common/models.py:1701
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:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Csak az aktív változatokat"
-#: common/models.py:1639
+#: common/models.py:1708
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:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Árazás újraszámítás gyakoriság"
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr "Árak automatikus frissítése ennyi nap után"
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Belső árak"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Alkatrészekhez belső ár engedélyezése"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Belső ár felülbírálása"
-#: common/models.py:1662
+#: common/models.py:1731
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:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Címke nyomtatás engedélyezése"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Címke nyomtatás engedélyezése a web felületről"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "Címke kép DPI"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Riportok engedélyezése"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Riportok előállításának engedélyezése"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Debug mód"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Riportok előállítása HTML formátumban (hibakereséshez)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr "Jelentési hibák naplózása"
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr "Jelentések generálása közben jelentkező hibák naplózása"
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Lapméret"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Alapértelmezett lapméret a PDF riportokhoz"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Teszt riportok engedélyezése"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Teszt riportok előállításának engedélyezése"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Teszt riportok hozzáadása"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Globálisan egyedi sorozatszámok"
-#: common/models.py:1721
+#: common/models.py:1776
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:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Sorozatszámok automatikus kitöltése"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Sorozatszámok automatikus kitöltése a formokon"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Kimerült készlet törlése"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy"
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Batch kód sablon"
-#: common/models.py:1742
+#: common/models.py:1797
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:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Készlet lejárata"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Készlet lejárat kezelésének engedélyezése"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Lejárt készlet értékesítése"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Lejárt készlet értékesítésének engedélyezése"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Álló készlet ideje"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Lejárt készlet gyártása"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Gyártás engedélyezése lejárt készletből"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Készlet tulajdonosok kezelése"
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr "Tulajdonosok kezelésének engedélyezése a készlet helyekre és tételekre"
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Hely alapértelmezett ikon"
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr "Hely alapértelmezett ikon (üres ha nincs)"
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Beépített készlet megjelenítése"
-#: common/models.py:1787
+#: common/models.py:1842
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:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr "Tételek telepítésekor a darabjegyzék ellenőrzése"
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr "A beépített tételeknek a szülő elem darabjegyzékében szerepelniük kell"
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
-msgstr ""
+msgstr "Lehet Hiányzó Készletet Mozgatni"
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
-msgstr ""
+msgstr "Lehet-e olyan készleteket mozgatni készlethelyek között amik nincsenek raktáron"
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Gyártási utasítás azonosító minta"
-#: common/models.py:1810
+#: common/models.py:1865
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:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr "Felelős tulajdonos szükséges"
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr "Minden rendeléshez felelőst kell rendelni"
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
-msgstr ""
+msgstr "Szükséges Aktív Alkatrész"
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
-msgstr ""
+msgstr "Inaktív alkatrészekre nem lehet Gyártási Rendelést létrehozni"
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
-msgstr ""
+msgstr "Elvárás a Lezárt Alkatrész"
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
-msgstr ""
+msgstr "Megakadályozza, hogy nem lezárt alkatrészekre gyártási rendelést lehessen indítani"
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
-msgstr ""
+msgstr "Jóváhagyott Alkatrészjegyzék Kötelező"
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
-msgstr ""
+msgstr "Megakadályozza gyártási rendelés készítését ha nincsen az Alkatrészjegyzék jóváhagyva"
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
-msgstr ""
+msgstr "Leszármazott Gyártásoknak Lezártnak Kell Lennie"
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
-msgstr ""
+msgstr "Amíg minden leszármazott gyártás le nincsen zárva nem lehet a szülő gyártást lezárni"
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr "Blokkolás a tesztek sikeres végrehajtásáig"
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr "Nem lehet gyártási tételt befejezni amíg valamennyi kötelező teszt sikeres nem lett"
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Visszavétel engedélyezése"
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr "Visszavételek engedélyezése a felületen"
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Visszavétel azonosító minta"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr "Szükséges minta a visszavétel azonosító mező előállításához"
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Befejezett visszavétel szerkesztése"
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr "Visszavétel szerkesztésének engedélyezése befejezés után"
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Vevői rendelés azonosító minta"
-#: common/models.py:1888
+#: common/models.py:1943
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:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Vevői rendeléshez alapértelmezett szállítmány"
-#: common/models.py:1901
+#: common/models.py:1956
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:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Befejezett vevői rendelés szerkesztése"
-#: common/models.py:1908
+#: common/models.py:1963
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:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
-msgstr ""
+msgstr "Leszállított Rendelések Készre jelölése"
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
-msgstr ""
+msgstr "Leszállítottnak jelölt Értékesítési rendelések automatikusan Kész-re lesznek állítva, a \"Leszállított\" állapot átugrásával"
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Beszerzési rendelés azonosító minta"
-#: common/models.py:1924
+#: common/models.py:1979
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:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Befejezett beszerzési rendelés szerkesztése"
-#: common/models.py:1938
+#: common/models.py:1993
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:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr "Beszerzési rendelések automatikus befejezése"
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "A beszerzési rendelés automatikus befejezése ha minden sortétel beérkezett"
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Elfelejtett jelszó engedélyezése"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon"
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Regisztráció engedélyezése"
-#: common/models.py:1960
+#: common/models.py:2015
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:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "SSO engedélyezése"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "SSO engedélyezése a bejelentkező oldalon"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "SSO regisztráció engedélyezése"
-#: common/models.py:1973
+#: common/models.py:2028
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:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
-msgstr ""
+msgstr "SSO csoport szinkronizálás engedélyezése"
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
-msgstr ""
+msgstr "Az InvenTree csoportok szinkronizálása a hitelesítésszolgáltatóhoz"
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
-msgstr ""
+msgstr "SSO csoport kulcs"
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
-msgstr ""
+msgstr "A csoportkérés tulajdonság neve amit a hitelesítésszolgáltató nyújt"
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
-msgstr ""
+msgstr "SSO csoport hozzárendelés"
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
-msgstr ""
+msgstr "Az SSO csoportok hozzárendelése az InvenTree csoportokhoz. Ha a helyi csoport nem létezik, létre lesz hozva."
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
-msgstr ""
+msgstr "Az SSO-n kívüli csoportok eltávolítása"
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
-msgstr ""
+msgstr "Ha egy felhasználóhoz rendelt csoport nem létezik az azonosításszolgáltatóban azt eltávolítsuk el. Ennek a kikapcsolása biztonsági problémákhoz vezethet"
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Email szükséges"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Kötelező email megadás regisztrációkor"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "SSO felhasználók automatikus kitöltése"
-#: common/models.py:2019
+#: common/models.py:2074
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:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "Email kétszer"
-#: common/models.py:2026
+#: common/models.py:2081
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:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Jelszó kétszer"
-#: common/models.py:2032
+#: common/models.py:2087
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:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Engedélyezett domainek"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Feliratkozás korlátozása megadott domain-ekre (vesszővel elválasztva, @-al kezdve)"
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Csoport regisztráláskor"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
-msgstr ""
+msgstr "Ehhez a csoporthoz lesznek az új felhasználók rendelve. Ha az SSO csoport szinkronizálás engedélyezve van, akkor ez a csoport csak akkor lesz hozzárendelve a felhasználóhoz ha az azonosítás szolgáltató semmilyen csoportot nem rendelt hozzá."
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Többfaktoros hitelesítés kényszerítése"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Pluginok ellenőrzése indításkor"
-#: common/models.py:2061
+#: common/models.py:2116
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:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr "Plugin frissítések ellenőrzése"
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr "Frissítések periódikus ellenőrzésének engedélyezése a telepített pluginokra"
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "URL integráció engedélyezése"
-#: common/models.py:2077
+#: common/models.py:2132
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:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Navigációs integráció engedélyezése"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Navigációs integráció engedélyezése a pluginok számára"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "App integráció engedélyezése"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "App hozzáadásának engedélyezése a pluginok számára"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Ütemezés integráció engedélyezése"
-#: common/models.py:2098
+#: common/models.py:2153
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:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Esemény integráció engedélyezése"
-#: common/models.py:2105
+#: common/models.py:2160
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:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Projektszámok engedélyezése"
-#: common/models.py:2112
+#: common/models.py:2174
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:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Leltár funkció"
-#: common/models.py:2119
+#: common/models.py:2181
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:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr "Külső helyek nélkül"
-#: common/models.py:2127
+#: common/models.py:2189
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:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Automatikus leltár időpontja"
-#: common/models.py:2135
+#: common/models.py:2197
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:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr "Riport törlési gyakoriság"
-#: common/models.py:2143
+#: common/models.py:2205
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:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr "Felhasználók teljes nevének megjelenítése"
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr "Felhasználói név helyett a felhasználók teljes neve jelenik meg"
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr "Teszt állomás adatok engedélyezése"
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr "Tesztállomás adatok gyűjtésének teszt eredménybe gyűjtésének engedélyezése"
-#: common/models.py:2169 common/models.py:2549
-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:2224
+msgid "Create Template on Upload"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
+
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Inaktív alkatrészek elrejtése"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon"
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Értesítésre beállított alkatrészek megjelenítése"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Alkatrész értesítések megjelenítése a főoldalon"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Értesítésre beállított kategóriák megjelenítése"
-#: common/models.py:2227
+#: common/models.py:2294
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:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Legújabb alkatrészek megjelenítése"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Legújabb alkatrészek megjelenítése a főoldalon"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
msgstr "Hibás alkatrészjegyzékek megjelenítése"
-#: common/models.py:2239
+#: common/models.py:2306
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:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Legfrissebb készlet változások megjelenítése"
-#: common/models.py:2245
+#: common/models.py:2312
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:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Alacsony készlet megjelenítése"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Alacsony készletek megjelenítése a főoldalon"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Kimerült készlet megjelenítése"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Kimerült készletek megjelenítése a főoldalon"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Gyártáshoz szükséges készlet megjelenítése"
-#: common/models.py:2263
+#: common/models.py:2330
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:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Lejárt készlet megjelenítése"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Lejárt készletek megjelenítése a főoldalon"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Állott készlet megjelenítése"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Álló készletek megjelenítése a főoldalon"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Függő gyártások megjelenítése"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Késésben lévő gyártások megjelenítése"
-#: common/models.py:2287
+#: common/models.py:2354
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:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Kintlévő beszerzési rendelések megjelenítése"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Késésben lévő megrendelések megjelenítése"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Késésben lévő megrendelések megjelenítése a főoldalon"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Függő vevői rendelések megjelenítése"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Függő vevői rendelések megjelenítése a főoldalon"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Késésben lévő vevői rendelések megjelenítése"
-#: common/models.py:2311
+#: common/models.py:2378
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:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
msgstr "Függő vevői szállítmányok megjelenítése"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr "Folyamatban lévő vevői szállítmányok megjelenítése a főoldalon"
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Hírek megjelenítése"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Hírek megjelenítése a főoldalon"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Beágyazott címke megjelenítés"
-#: common/models.py:2330
+#: common/models.py:2397
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:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Alapértelmezett címkenyomtató"
-#: common/models.py:2338
+#: common/models.py:2405
msgid "Configure which label printer should be selected by default"
msgstr "Melyik címkenyomtató legyen az alapértelmezett"
-#: common/models.py:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Beágyazott riport megjelenítés"
-#: common/models.py:2346
+#: common/models.py:2413
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:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Alkatrészek keresése"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
msgstr "Alkatrészek megjelenítése a keresési előnézetben"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Beszállítói alkatrészek keresése"
-#: common/models.py:2359
+#: common/models.py:2426
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:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Gyártói alkatrészek keresése"
-#: common/models.py:2365
+#: common/models.py:2432
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:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Inaktív alkatrészek elrejtése"
-#: common/models.py:2371
+#: common/models.py:2438
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:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Kategóriák keresése"
-#: common/models.py:2377
+#: common/models.py:2444
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:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Készlet keresése"
-#: common/models.py:2383
+#: common/models.py:2450
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:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Nem elérhető készlet tételek elrejtése"
-#: common/models.py:2390
+#: common/models.py:2457
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:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Helyek keresése"
-#: common/models.py:2397
+#: common/models.py:2464
msgid "Display stock locations in search preview window"
msgstr "Készlet helyek megjelenítése a keresési előnézetben"
-#: common/models.py:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Cégek keresése"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Cégek megjelenítése a keresési előnézetben"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Gyártási utasítások keresése"
-#: common/models.py:2409
+#: common/models.py:2476
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:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Beszerzési rendelések keresése"
-#: common/models.py:2415
+#: common/models.py:2482
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:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Inaktív beszerzési rendelések kihagyása"
-#: common/models.py:2422
+#: common/models.py:2489
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:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Vevői rendelések keresése"
-#: common/models.py:2429
+#: common/models.py:2496
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:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Inaktív vevői rendelések kihagyása"
-#: common/models.py:2436
+#: common/models.py:2503
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:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Visszavétel keresése"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr "Visszavételek megjelenítése a keresés előnézet ablakban"
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr "Inaktív visszavételek kihagyása"
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr "Inaktív visszavételek kihagyása a keresési előnézet találataiból"
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Keresési előnézet eredményei"
-#: common/models.py:2458
+#: common/models.py:2525
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:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Regex keresés"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr "Reguláris kifejezések engedélyezése a keresésekben"
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr "Teljes szó keresés"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr "A keresések csak teljes szóra egyező találatokat adjanak"
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Mennyiség megjelenítése a formokon"
-#: common/models.py:2477
+#: common/models.py:2544
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:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "ESC billentyű zárja be a formot"
-#: common/models.py:2483
+#: common/models.py:2550
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:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Rögzített menüsor"
-#: common/models.py:2489
+#: common/models.py:2556
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:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Dátum formátum"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Preferált dátum formátum a dátumok kijelzésekor"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Alkatrész ütemezés"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Alkatrész ütemezési információk megjelenítése"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Alkatrész leltár"
-#: common/models.py:2516
+#: common/models.py:2583
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:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Táblázati szöveg hossz"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maximális szöveg hossz ami megjelenhet a táblázatokban"
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr "Hibariportok fogadása"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr "Értesítések fogadása a rendszerhibákról"
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr "Utoljára használt nyomtató gépek"
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr "Az utoljára használt nyomtató tárolása a felhasználóhoz"
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Felhasználó"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr "Ársáv mennyiség"
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Ár"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr "Egységár egy meghatározott mennyiség esetén"
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr "Végpont"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Végpont ahol ez a webhook érkezik"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Webhook neve"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Aktív-e ez a webhook"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr "Token"
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Token a hozzáféréshez"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Titok"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Megosztott titok a HMAC-hoz"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "Üzenet azonosító"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Egyedi azonosító ehhez az üzenethez"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr "Kiszolgáló"
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Kiszolgáló ahonnan ez az üzenet érkezett"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Fejléc"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Üzenet fejléce"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Törzs"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Üzenet törzse"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Végpont amin ez az üzenet érkezett"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Dolgozott rajta"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "Befejeződött a munka ezzel az üzenettel?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr "Azonosító"
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Cím"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Link"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Közzétéve"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Szerző"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Összefoglaló"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Elolvasva"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "Elolvasva?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Képfájl"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
-msgstr ""
+msgstr "A képhez tartozó model típus"
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
-msgstr ""
+msgstr "A képhez tartozó model azonosító"
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
-msgstr ""
+msgstr "Egyedi mértékegység"
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
-msgstr ""
+msgstr "A mértékegység szimbólumának egyedinek kell lennie"
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr "A mértékegységnek valós azonosítónak kell lennie"
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr "Egység neve"
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Szimbólum"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr "Opcionális mértékegység szimbólum"
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definíció"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr "Mértékegység definíció"
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Melléklet"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Hiányzó fájl"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Hiányzó külső link"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Válaszd ki a mellekelni kívánt fájlt"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Megjegyzés"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
-msgstr ""
+msgstr "Melléklet megjegyzés"
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
-msgstr ""
+msgstr "Feltöltés dátuma"
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
-msgstr ""
+msgstr "A fájl feltöltésének dátuma"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr "Fájl mérete"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr "Fájlméret bájtban"
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
+msgstr "A melléklet model típusa érvénytelen"
+
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr "Kulcs"
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr "A model adatbázisba tárolandó érték"
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr "Az állapot neve"
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr "Címke"
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr "A felületen megjelenített címke"
+
+#: common/models.py:3424
+msgid "Color"
+msgstr "Szín"
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr "A felöleten megjelenő szín"
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr "Logikai kulcs"
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr "Az állapot logikai kulcsa amely megegyezik az üzleti logika egyedi állapotával"
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr "Model"
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr "A Model amihez ez az állapot tartozik"
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr "Hivatkozott Állapot Készlet"
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr "Az az Állapot készlet, melyet ez az egyedi állapot kibővít"
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr "Egyedi Állapot"
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr "Egyedi Állapotok"
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr "Modelt választani kötelező"
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr "Kulcsot választani kötelező"
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr "Logikai kulcsot választani kötelező"
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr "A kulcs és a logikai kulcs nem lehet azonos"
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr "Kötelező kiválasztani a bővítendő állapotot"
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr "A hivatkozott állapot nem található"
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr "A kulcsnak eltérőnek kell lennie a hivatkozott állapotok logikai kulcsaitól"
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr "A logikai kulcsnak szerepelnie kell a hivatkozott állapotok logikai kulcsai közt"
+
+#: common/models.py:3519
+msgid "Barcode Scan"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr "Adat"
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr "Időbélyeg"
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Kontextus"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Eredmény"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Új {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
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:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr "{verbose_name} megszakítva"
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr "Egy hozzád rendelt megrendelés megszakítva"
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr "Készlet érkezett"
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr "Készlet érkezett egy beszerzési megrendeléshez"
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr "Készlet érkezett vissza egy visszavétel miatt"
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr "Plugin hiba"
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr "Folyamatban"
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr "Folyamatban lévő feladatok"
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr "Ütemezett Feladatok"
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr "Hibás feladatok"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr "Feladat ID"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr "Egyedi feladat ID"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr "Zárol"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr "Zárolási idő"
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr "Feladat neve"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr "Funkció"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr "Funkció neve"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr "Paraméterek"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr "Feladat paraméterei"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr "Kulcsszó paraméterek"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr "Feladat kulcsszó paraméterek"
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Fájlnév"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr "Modell típusa"
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
-msgstr ""
+msgstr "A felhasználónak nincs joga létrehozni vagy módosítani ehhez a modelhez tartozó mellékleteket"
#: common/validators.py:35
msgid "No attachment model type provided"
-msgstr ""
+msgstr "A melléklethez nem tartozik model típus"
#: common/validators.py:41
msgid "Invalid attachment model type"
-msgstr ""
+msgstr "Érvénytelen melléklet model típus"
#: common/validators.py:82
msgid "Minimum places cannot be greater than maximum places"
-msgstr ""
+msgstr "A legkisebb helyiérték nem lehet nagyobb mint a legnagyobb helyiérték"
#: common/validators.py:94
msgid "Maximum places cannot be less than minimum places"
-msgstr ""
+msgstr "A legnagyobb helyiérték nem lehet kisebb mint a legkisebb helyiérték"
#: common/validators.py:105
msgid "An empty domain is not allowed."
@@ -4117,15 +4296,15 @@ msgstr "Mezők egyeztetése"
msgid "Match Items"
msgstr "Tételek egyeztetése"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Mezők egyeztetése sikertelen"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Importált alkatrészek"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4156,429 +4335,429 @@ msgstr "A saját alkatrész Aktív"
msgid "Supplier is Active"
msgstr "A Beszállító Aktív"
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Cég"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Cégek"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Cég leírása"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "A cég leírása"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Weboldal"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Cég weboldala"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Telefonszám"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Kapcsolattartó telefonszáma"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Kapcsolattartó email címe"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Névjegy"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Kapcsolattartó"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Link a külső céginformációhoz"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr "Ez a vállalat aktív?"
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
-msgstr ""
+msgstr "Vevő"
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "Értékesítesz alkatrészeket ennek a cégnek?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
-msgstr ""
+msgstr "Beszállító"
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "Vásárolsz alkatrészeket ettől a cégtől?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
-msgstr ""
+msgstr "Gyártó"
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Gyárt ez a cég alkatrészeket?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Cég által használt alapértelmezett pénznem"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Cím"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr "Címek"
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr "Cég kiválasztása"
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr "Cím megnevezése"
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr "Címhez tartozó leírás, megnevezés"
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr "Elsődleges cím"
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr "Beállítás elsődleges címként"
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr "1. sor"
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr "Cím első sora"
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr "2. sor"
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr "Cím második sora"
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr "Irányítószám"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr "Város/Régió"
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr "Irányítószám város/régió"
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr "Állam/Megye"
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr "Állam vagy megye"
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr "Ország"
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr "Cím országa"
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr "Megjegyzés a futárnak"
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr "Futárnak szóló megjegyzések"
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr "Belső szállítási megjegyzések"
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr "Szállítási megjegyzések belső használatra"
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr "Link a címinformációkhoz (külső)"
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Gyártói alkatrész"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Kiindulási alkatrész"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Válassz alkatrészt"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Gyártó"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Gyártó kiválasztása"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr "MPN (Gyártói cikkszám)"
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "URL link a gyártói alkatrészhez"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Gyártói alkatrész leírása"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
-msgstr ""
+msgstr "Gyártói Cikkszám"
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Paraméter neve"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Érték"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Paraméter értéke"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Mértékegység"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Paraméter mértékegység"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Beszállítói alkatrész"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr "A csomagolási egységnek kompatibilisnek kell lennie az alkatrész mértékegységgel"
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr "Csomagolási mennyiségnek nullánál többnek kell lennie"
-#: company/models.py:740
+#: company/models.py:737
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:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Beszállító"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Beszállító kiválasztása"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Beszállítói cikkszám"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr "Ez a szállítói termék aktív?"
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Gyártói alkatrész kiválasztása"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "URL link a beszállítói alkatrészhez"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Beszállítói alkatrész leírása"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Megjegyzés"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "alap költség"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimális díj (pl. tárolási díj)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Alkatrész csomagolás"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Csomagolási mennyiség"
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr "Egy csomagban kiszállítható mennyiség, hagyd üresen az egyedi tételeknél."
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "többszörös"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Többszörös rendelés"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Beszállítónál elérhető mennyiség"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Elérhetőség frissítve"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Utolsó elérhetőségi adat frissítés"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
-msgstr ""
+msgstr "Beszállítói Ár Kedvezmény"
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Beszállító által használt alapértelmezett pénznem"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
-msgstr ""
+msgstr "Cégnév"
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "Készleten"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr "Inaktív"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Beszerzési rendelés létrehozása"
@@ -4591,7 +4770,7 @@ msgid "Edit company information"
msgstr "Cég adatainak szerkesztése"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Cég szerkesztése"
@@ -4606,11 +4785,12 @@ msgstr "Cég törlése"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4631,16 +4811,16 @@ msgstr "Kép letöltése URL-ről"
msgid "Delete image"
msgstr "Kép törlése"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Vevő"
@@ -4654,7 +4834,7 @@ msgid "Phone"
msgstr "Telefonszám"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr "Kép eltávolítása"
@@ -4663,19 +4843,19 @@ msgid "Remove associated image from this company"
msgstr "Céghez rendelt kép eltávolítása"
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: 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:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr "Kép feltöltése"
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr "Kép letöltése"
@@ -4715,7 +4895,7 @@ msgstr "Beszállítói készlet"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4738,7 +4918,7 @@ msgstr "Új beszerzési rendelés"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4765,7 +4945,7 @@ msgstr "Hozzárendelt készlet"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4812,24 +4992,24 @@ msgid "Manufacturers"
msgstr "Gyártók"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Alkatrész rendelés"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Gyártói alkatrész szerkesztése"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
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:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Belső alkatrész"
@@ -4838,8 +5018,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4861,7 +5041,7 @@ msgstr "Új paraméter"
#: company/templates/company/manufacturer_part.html:177
msgid "Manufacturer Part Notes"
-msgstr ""
+msgstr "Gyártói Cikk Megjegyzés"
#: company/templates/company/manufacturer_part.html:225
#: templates/js/translated/part.js:1429
@@ -4888,112 +5068,113 @@ msgstr "Hozzárendelt készlet tételek"
msgid "Contacts"
msgstr "Névjegyek"
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Beszállítói alkatrész másolása"
-#: company/templates/company/supplier_part.html:73
+#: 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:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Beszállítói alkatrész törlése"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Nincs elérhető beszállítói információ"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr "SKU (leltári azonosító)"
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Beszállítói készlet"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Új készlet tétel létrehozása"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Új készlet tétel"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Beszállítói alkatrész rendelések"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Árinformációk"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Ársáv hozzáadása"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
-msgstr ""
+msgstr "Szállítói Cikk Megjegyzés"
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr "Beszállítói alkatrész QR kód"
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
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:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr "Alkatrész elérhetőség frissítése"
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Készlet tételek"
@@ -5023,232 +5204,232 @@ msgstr "Új vevő"
msgid "New Company"
msgstr "Új cég"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr "Saját Állapot Kulcs"
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr "További állapot információk erről a tételről"
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Kiküldve"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
-msgstr ""
+msgstr "Hibás export formátum"
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
-msgstr ""
+msgstr "Importálandó adatfájl"
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr "Oszlopok"
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
-msgstr ""
+msgstr "Betöltés állapota"
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
-msgstr ""
+msgstr "Mező Alapértelmezett Érték"
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
-msgstr ""
+msgstr "Mező Felülbírálás"
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
-msgstr ""
+msgstr "Mező Szűrők"
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
-msgstr ""
+msgstr "Néhány kötelező mező nem került hozzárendelésre"
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
-msgstr ""
-
-#: importer/models.py:392
-msgid "Field is already mapped to a data column"
-msgstr ""
+msgstr "Oszlop már adatbázis mezőhöz lett rendelve"
#: importer/models.py:401
+msgid "Field is already mapped to a data column"
+msgstr "Adatbázis mező már adatfájl oszlophoz lett rendelve"
+
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
-msgstr ""
+msgstr "Az oszlop összerendelésnek egy helyes importálási művelethez kell kapcsolódnia"
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
-msgstr ""
+msgstr "Az Oszlop nem létezik ebben a fájlban"
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
-msgstr ""
-
-#: importer/models.py:417
-msgid "Selected field is read-only"
-msgstr ""
-
-#: importer/models.py:422 importer/models.py:493
-msgid "Import Session"
-msgstr ""
+msgstr "A mező nem létezik a cél adatszerkezetben"
#: importer/models.py:426
+msgid "Selected field is read-only"
+msgstr "Kijelölt mező csak olvasható"
+
+#: importer/models.py:431 importer/models.py:502
+msgid "Import Session"
+msgstr "Importálási művelet"
+
+#: importer/models.py:435
msgid "Field"
-msgstr ""
+msgstr "Mező"
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
-msgstr ""
+msgstr "Oszlop"
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
-msgstr ""
+msgstr "Sor száma"
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
-msgstr ""
+msgstr "Eredeti sor adat"
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr "Adat"
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr "Hibák"
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr "Érvényes"
#: importer/operations.py:28 importer/operations.py:49
msgid "Unsupported data file format"
-msgstr ""
+msgstr "Nem támogatott adatfájl formátum"
#: importer/operations.py:40
msgid "Failed to open data file"
-msgstr ""
+msgstr "Adatfájl megnyitása sikertelen"
#: importer/operations.py:51
msgid "Invalid data file dimensions"
-msgstr ""
+msgstr "Az adatállomány méretei - szélessége nem megfelelő"
#: importer/serializers.py:91
msgid "Invalid field defaults"
-msgstr ""
+msgstr "Érvénytelen mező alapértelmezések"
#: importer/serializers.py:104
msgid "Invalid field overrides"
-msgstr ""
+msgstr "Érvénytelen mező felülbírálások"
#: importer/serializers.py:117
msgid "Invalid field filters"
-msgstr ""
+msgstr "Érvénytelen mező szűrések"
#: importer/serializers.py:178
msgid "Rows"
-msgstr ""
+msgstr "Sorok"
#: importer/serializers.py:179
msgid "List of row IDs to accept"
-msgstr ""
+msgstr "Az elfogadható azonosítók listája"
#: importer/serializers.py:192
msgid "No rows provided"
-msgstr ""
+msgstr "Nincs sor megadva"
#: importer/serializers.py:196
msgid "Row does not belong to this session"
-msgstr ""
+msgstr "A sor nem az aktuális művelethez kapcsolódik"
#: importer/serializers.py:199
msgid "Row contains invalid data"
-msgstr ""
+msgstr "A Sor érvénytelen adatot tartalmaz"
#: importer/serializers.py:202
msgid "Row has already been completed"
-msgstr ""
-
-#: importer/status_codes.py:11
-msgid "Initializing"
-msgstr ""
-
-#: importer/status_codes.py:12
-msgid "Mapping Columns"
-msgstr ""
+msgstr "A sor már be lett fejezve"
#: importer/status_codes.py:13
-msgid "Importing Data"
-msgstr ""
+msgid "Initializing"
+msgstr "Előkészítés"
-#: importer/status_codes.py:16
+#: importer/status_codes.py:18
+msgid "Mapping Columns"
+msgstr "Oszlopok összerendelése"
+
+#: importer/status_codes.py:21
+msgid "Importing Data"
+msgstr "Adatok importálása"
+
+#: importer/status_codes.py:24
msgid "Processing Data"
-msgstr ""
+msgstr "Adatok feldolgozása"
#: importer/validators.py:21
msgid "Data file exceeds maximum size limit"
-msgstr ""
+msgstr "Adatfájl meghaladja a maximális méretet"
#: importer/validators.py:26
msgid "Data file contains no headers"
-msgstr ""
+msgstr "Adatfájlból hiányzik a fejléc"
#: importer/validators.py:29
msgid "Data file contains too many columns"
-msgstr ""
+msgstr "Túl sok oszlop az adatfájlban"
#: importer/validators.py:32
msgid "Data file contains too many rows"
-msgstr ""
+msgstr "Túl sok sor az adatfájlban"
#: importer/validators.py:53
msgid "Value must be a valid dictionary object"
-msgstr ""
+msgstr "Az értéknek a érvényes szótár elemnek kell lennie"
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr "Másolatok"
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr "Címkénkénti nyomtatandó mennyiség"
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr "Csatlakoztatba"
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Ismeretlen"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr "Nyomtatás"
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr "Nincs papír"
-#: machine/machine_types/label_printer.py:235
-msgid "Paper jam"
-msgstr ""
-
#: machine/machine_types/label_printer.py:236
+msgid "Paper jam"
+msgstr "Elakadt a papír"
+
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr "Nincs kapcsolat"
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr "Címkenyomtató"
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr "Közvetlen címkenyomtatás különféle tételekre."
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr "Nyomtató helye"
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr "Nyomtató korlátozása egy készlethelyhez"
@@ -5308,79 +5489,75 @@ msgstr "Konfiguráció típusa"
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Teljes ár"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr "Rendelés állapota"
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Rendelés azonosítója"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr "Kintlévő"
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
-msgstr ""
+msgstr "Van projektszáma"
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr "Van árazás"
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr "Nincs egyező beszerzési rendelés"
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr "Rendelés"
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr "A rendelés teljesítve"
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr "A rendelés függőben"
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Beszerzési rendelés"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr "Visszavétel"
@@ -5388,751 +5565,782 @@ msgstr "Visszavétel"
msgid "Total price for this order"
msgstr "A rendelés teljes ára"
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr "Rendelés pénzneme"
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr "Megrendeléshez használt pénznem (hagyd üresen a cégnél alapértelmezetthez)"
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr "A kapcsolattartó nem egyezik a kiválasztott céggel"
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr "Rendelés leírása (opcionális)"
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr "Válassz projektszámot ehhez a rendeléshez"
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Link külső weboldalra"
-#: order/models.py:310
+#: order/models.py:317
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:324
+#: order/models.py:331
msgid "Created By"
msgstr "Készítette"
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr "Felhasználó vagy csoport aki felelőse ennek a rendelésnek"
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr "Kapcsolattartó ehhez a rendeléshez"
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr "Cég címei ehhez a rendeléshez"
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Rendelés azonosító"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Beszerzési rendelés állapota"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Cég akitől a tételek beszerzésre kerülnek"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Beszállítói azonosító"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Beszállítói rendelés azonosító kód"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "érkeztette"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Kiállítás dátuma"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Kiállítás dátuma"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Rendelés teljesítési dátuma"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
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:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "Mennyiség pozitív kell legyen"
-#: order/models.py:991
+#: order/models.py:1018
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:1003
+#: order/models.py:1030
msgid "Sales order status"
-msgstr ""
+msgstr "Értékesítési rendelés állapot"
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Vevői azonosító "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Megrendelés azonosító kódja a vevőnél"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Kiszállítás dátuma"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "szállította"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
-msgstr ""
+msgstr "Rendelés már teljesítve"
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
-msgstr ""
+msgstr "Rendelés már visszavonva"
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr "Csak nyitott rendelés jelölhető késznek"
-#: order/models.py:1088
+#: order/models.py:1105
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:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "A rendelés nem jelölhető késznek mivel nem teljesített sortételek vannak"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Tétel mennyiség"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Sortétel azonosító"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Sortétel megjegyzései"
-#: order/models.py:1393
+#: order/models.py:1410
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:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr "Sortétel leírása (opcionális)"
-#: order/models.py:1420
-msgid "Context"
-msgstr "Kontextus"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "További kontextus ehhez a sorhoz"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Egységár"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
-msgstr ""
+msgstr "Vevői Rendelés Sortétel"
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "Beszállítói alkatrésznek egyeznie kell a beszállítóval"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "törölve"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Beszállítói alkatrész"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Beérkezett"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Érkezett tételek száma"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Beszerzési ár"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Beszerzési egységár"
-#: order/models.py:1536
-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:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
-msgstr ""
+msgstr "Vevői Rendelés Extra Sor"
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
-msgstr ""
+msgstr "Vevői Rendelés Sortétel"
-#: order/models.py:1637
+#: order/models.py:1653
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:1642
+#: order/models.py:1658
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:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Eladási ár"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Eladási egységár"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Kiszállítva"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Szállított mennyiség"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
-msgstr ""
+msgstr "Vevői Rendelés Szállítása"
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Szállítás dátuma"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr "Szállítási dátum"
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr "Kézbesítés dátuma"
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Ellenőrizte"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Szállítmány"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Szállítmány száma"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Nyomkövetési szám"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Szállítmány nyomkövetési információ"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Számlaszám"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Hozzátartozó számla referencia száma"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "Szállítmány már elküldve"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "Szállítmány nem tartalmaz foglalt készlet tételeket"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
-msgstr ""
+msgstr "Vevői Rendelés Extra Sor"
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
-msgstr ""
+msgstr "Vevői rendeléshez foglalások"
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "Készlet tétel nincs hozzárendelve"
-#: order/models.py:1973
+#: order/models.py:2006
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:1976
+#: order/models.py:2009
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:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
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:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "Vevői rendelés nem egyezik a szállítmánnyal"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "Szállítmány nem egyezik a vevői rendeléssel"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Sor"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Vevői rendelés szállítmány azonosító"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Tétel"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Válaszd ki a foglalásra szánt készlet tételt"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Készlet foglalási mennyiség megadása"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr "Visszavétel azonosító"
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr "Cég akitől a tételek visszavételre kerülnek"
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr "Visszavétel állapota"
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
-msgstr ""
+msgstr "Visszavétel sortétel"
-#: order/models.py:2376
+#: order/models.py:2415
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:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr "Válaszd ki a vevőtől visszavenni kívánt tételt"
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr "Visszavétel dátuma"
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr "Mikor lett visszavéve a tétel"
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr "Kimenetel"
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr "Sortétel végső kimenetele"
-#: order/models.py:2418
+#: order/models.py:2457
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/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
+msgstr "Visszavétel extra tétel"
+
+#: order/serializers.py:87
+msgid "Order ID"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr "Kész sorok"
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr "Beszállító neve"
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "A rendelést nem lehet törölni"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
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:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr "A rendelésben teljesítetlen sortételek vannak"
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "A rendelés nem nyitott"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr "Automata árazás"
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr "Beszerzési ár automatikus számítása a beszállítói alkatrész adatai alapján"
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Beszérzési ár pénzneme"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr "Elemek összevonása"
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr "Azonos forrás és cél dátumú Alkatrész tételeinek összevonása egy tételre"
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Belső cikkszám"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
-msgstr ""
+msgstr "Belső cikkszám"
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "Beszállítói alkatrészt meg kell adni"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "Beszerzési rendelést meg kell adni"
-#: order/serializers.py:595
+#: order/serializers.py:680
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:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Sortétel"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "Sortétel nem egyezik a beszerzési megrendeléssel"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Válassz cél helyet a beérkezett tételeknek"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr "Írd be a batch kódját a beérkezett tételeknek"
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Írd be a sorozatszámokat a beérkezett tételekhez"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
-msgstr ""
+msgstr "Bejövő készlettételek csomagolási információjának felülbírálata"
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
-msgstr ""
+msgstr "Kiegészítő megjegyzés beérkező készlettételekhez"
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Vonalkód"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr "Beolvasott vonalkód"
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Ez a vonalkód már használva van"
-#: order/serializers.py:747
+#: order/serializers.py:831
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:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Sortételt meg kell adni"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "A cél helyet kötelező megadni"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "Megadott vonalkódoknak egyedieknek kel lenniük"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Eladási ár pénzneme"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr "Nincsenek szállítmány részletek megadva"
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez"
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr "Mennyiség pozitív kell legyen"
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Írd be a sorozatszámokat a kiosztáshoz"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr "Szállítmány kiszállítva"
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez"
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr "Nincs találat a következő sorozatszámokra"
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
-msgstr "A következő sorozatszámok már ki lettek osztva"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr "Visszavétel sortétel"
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr "Sortétel nem egyezik a visszavétellel"
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr "A sortétel már beérkezett"
-#: order/serializers.py:1790
+#: order/serializers.py:1942
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:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr "Sortétel pénzneme"
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Elveszett"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Visszaküldve"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Folyamatban"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Visszavétel"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Javítás"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Csere"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Visszatérítés"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Elutasított"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr "Késésben lévő beszerzés"
-#: order/tasks.py:30
+#: order/tasks.py:35
#, 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:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr "Késésben lévő vevői rendelés"
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr "A {so} vevői rendelés most már késésben van"
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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:62
-#: order/templates/order/sales_order_base.html:62
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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:72
-#: order/templates/order/sales_order_base.html:71
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr "Rendelés műveletek"
-#: order/templates/order/order_base.html:64
-#: order/templates/order/return_order_base.html:76
-#: order/templates/order/sales_order_base.html:75
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Rendelés szerkesztése"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr "Rendelés másolása"
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
-msgstr ""
+msgstr "Rendelés Felfüggesztése"
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Rendelés törlése"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr "Rendelés kiküldése"
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Rendelés teljesítettnek jelölése"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Rendelés befejezése"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr "Beszállítói alkatrész bélyegkép"
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Rendelés leírása"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr "Nincs elérhető beszállítói információ"
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr "Kész sortételek"
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Hiányos"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr "Kiküldve"
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Teljes költség"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "A teljes költség nem számolható"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr "Beszerzési rendelés QR kódja"
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr "Vonalkód hozzáadása a beszerzési rendeléshez"
@@ -6185,12 +6393,12 @@ msgstr "Kijelöltek másolása"
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6243,7 +6451,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6278,45 +6486,45 @@ msgstr "Érkezett tételek"
msgid "Order Notes"
msgstr "Rendelés megjegyzések"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr "Vevő logó bélyegkép"
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr "Visszavételi riport nyomtatása"
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr "Csomagolási lista nyomtatása"
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Vevői azonosító"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr "Teljes költség"
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr "Visszavétel QR kódja"
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr "Vonalkód visszavételhez rendelése"
@@ -6324,40 +6532,40 @@ msgstr "Vonalkód visszavételhez rendelése"
msgid "Order Details"
msgstr "Visszavétel részletei"
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr "Vevői rendelés nyomtatása"
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr "Tételek kiszállítása"
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
-msgstr ""
+msgstr "Kiszállítottnak Jelölve"
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr "Vevői rendelés befejezése, minden kiszállítva"
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
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:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr "Vevő rendelés QR kódja"
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr "Vonalkód hozzáadása a vevői rendeléshez"
@@ -6371,7 +6579,7 @@ msgid "Pending Shipments"
msgstr "Függő szállítmányok"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Műveletek"
@@ -6384,39 +6592,40 @@ msgstr "Új szállítmány"
msgid "Match Supplier Parts"
msgstr "Beszállítói alkatrészek egyeztetése"
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr "Vevő rendelés nem találhtó"
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Nem található ár"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "A {part} egységára {price}-ra módosítva"
-#: order/views.py:421
+#: order/views.py:422
#, 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:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr "IPN (Belső Cikkszám)"
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr "Változat"
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Kulcsszavak"
@@ -6428,7 +6637,7 @@ msgstr "Alkatrész ábra"
msgid "Category ID"
msgstr "Kategória ID"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "Kategória neve"
@@ -6441,11 +6650,11 @@ msgstr "Alapértelmezett készlethely ID"
msgid "Default Supplier ID"
msgstr "Alapértelmezett beszállító ID"
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr "Ebből a sablonból"
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr "Minimális készlet"
@@ -6453,23 +6662,23 @@ msgstr "Minimális készlet"
msgid "Used In"
msgstr "Felhasználva ebben"
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr "Gyártásban"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr "Minimum költség"
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr "Maximum költség"
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr "Szülő ID"
@@ -6482,8 +6691,8 @@ msgstr "Szülő neve"
msgid "Category Path"
msgstr "Kategória elérési út"
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6508,17 +6717,17 @@ msgstr "Szülő IPN"
#: part/admin.py:405
msgid "Part Revision"
-msgstr ""
+msgstr "Alkatrész változatok"
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr "Minimum ár"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr "Maximum ár"
@@ -6544,96 +6753,100 @@ msgstr "Felső szint"
#: part/api.py:143
msgid "Filter by top-level categories"
-msgstr ""
+msgstr "Csúcs készlethelyre szűrés"
+
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr "Lépcsőzetes"
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr "Szűrt eredmények tartalmazzák az alkategóriákat"
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr "Szülő"
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr "Szülő kategóriára szűrés"
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr "Fa kihagyása"
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr "Az adott kategória alkategóriáinak kihagyása"
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr "Van találat"
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr "Beérkező beszerzési rendelés"
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr "Kimenő vevői rendelés"
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr "Gyártással előállított készlet"
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr "A gyártási utasításhoz szükséges készlet"
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr "Teljes alkatrészjegyzék jóváhagyása"
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr "Ennek az opciónak ki kll lennie választva"
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
-msgstr ""
+msgstr "Változat"
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
-msgstr ""
+msgstr "Vannak Változatok"
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
-msgstr ""
+msgstr "Alkatrészjegyzék ellenőrizve"
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Kategória"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
-msgstr ""
+msgstr "Összeállított Alkatrész ellenőrizhető"
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
-msgstr ""
+msgstr "Összetevő alkatrész ellenőrizhető"
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr "Használ"
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Alapértelmezett hely"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Teljes készlet"
@@ -6642,795 +6855,795 @@ msgstr "Teljes készlet"
msgid "Input quantity for price calculation"
msgstr "Add meg a mennyiséget az árszámításhoz"
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Alkatrész kategória"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Alkatrész kategóriák"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Ebben a kategóriában lévő alkatrészek helye alapban"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr "Szerkezeti"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "A szerkezeti alkatrész kategóriákhoz nem lehet direktben alkatrészeket hozzáadni, csak az alkategóriáikhoz."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Alapértelmezett kulcsszavak"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr "Ebben a kategóriában évő alkatrészek kulcsszavai alapban"
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr "Ikon"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr "Ikon (opcionális)"
-#: part/models.py:178
+#: part/models.py:180
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:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
-msgstr ""
+msgstr "Lezárt alkatrész nem törölhető"
+
+#: part/models.py:517
+msgid "Cannot delete this part as it is still active"
+msgstr "Aktív alkatrész nem törölhető"
#: part/models.py:522
-msgid "Cannot delete this part as it is still active"
-msgstr ""
-
-#: part/models.py:527
msgid "Cannot delete this part as it is used in an assembly"
-msgstr ""
+msgstr "Összeállításban felhasznált alkatrész nem törölhető"
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr "Hibás választás a szülő alkatrészre"
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr "Az '{self}' alkatrész nem használható a '{parent}' alkatrészjegyzékében (mert rekurzív lenne)"
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr "Az '{parent}' alkatrész szerepel a '{self}' alkatrészjegyzékében (rekurzív)"
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr "Az IPN belső cikkszámnak illeszkednie kell a {pattern} regex mintára"
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
-msgstr ""
+msgstr "Alkatrész nem lehes saját magának verziója"
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
-msgstr ""
+msgstr "Nem lehet olyan alkatrészből új verziót csinálni ami már eleve egy verzió"
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
-msgstr ""
+msgstr "Verzió kódot meg kell adni"
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
-msgstr ""
+msgstr "Verziók csak összeállított alkatrészeknél engedélyezettek"
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
-msgstr ""
+msgstr "Nem lehet sablon alkatrészből új verziót csinálni"
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
-msgstr ""
+msgstr "A szülő alkatrésznek azonos sablonra kell mutatnia"
-#: part/models.py:816
+#: part/models.py:832
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:917
+#: part/models.py:976
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:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
-msgstr ""
+msgstr "Adott alkatrész verzióból már létezik egy."
-#: part/models.py:936
+#: part/models.py:997
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:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!"
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Alkatrész neve"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr "Sablon-e"
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr "Ez egy sablon alkatrész?"
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr "Ez az alkatrész egy másik változata?"
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr "Alkatrész leírása (opcionális)"
-#: part/models.py:1015
+#: part/models.py:1076
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:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Alkatrész kategória"
-#: part/models.py:1040
+#: part/models.py:1101
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:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
-msgstr ""
+msgstr "Ez egy másik alkatrész egy verziója?"
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
-msgstr ""
+msgstr "Ennek a verziója"
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr "Alapban hol tároljuk ezt az alkatrészt?"
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr "Alapértelmezett beszállító"
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr "Alapértelmezett beszállítói alkatrész"
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr "Alapértelmezett lejárat"
-#: part/models.py:1130
+#: part/models.py:1191
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:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr "Minimálisan megengedett készlet mennyiség"
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr "Alkatrész mértékegysége"
-#: part/models.py:1155
+#: part/models.py:1216
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:1161
+#: part/models.py:1222
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:1167
+#: part/models.py:1228
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:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
-msgstr ""
+msgstr "Lehet ehhez az alkatrészhez több ellenőrzési eredményt rögzíteni?"
-#: part/models.py:1179
+#: part/models.py:1240
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:1185
+#: part/models.py:1246
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:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr "Aktív-e ez az alkatrész?"
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
-msgstr ""
+msgstr "Lezárt"
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
-msgstr ""
+msgstr "Lezárt alkatrészt nem lehet szerkeszteni"
-#: part/models.py:1201
+#: part/models.py:1262
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:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr "Alkatrészjegyzék ellenőrző összeg"
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr "Tárolt alkatrészjegyzék ellenőrző összeg"
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr "Alkatrészjegyzéket ellenőrizte"
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr "Alkatrészjegyzék ellenőrzési dátuma"
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr "Létrehozó"
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr "Alkatrész felelőse"
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr "Utolsó leltár"
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr "Több értékesítése"
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr "Árszámítások gyorstárazásához használt pénznem"
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr "Minimum alkatrészjegyzék költség"
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr "Összetevők minimum költsége"
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr "Maximum alkatrészjegyzék költség"
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr "Összetevők maximum költsége"
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr "Minimum beszerzési ár"
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr "Eddigi minimum beszerzési költség"
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr "Maximum beszerzési ár"
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr "Eddigi maximum beszerzési költség"
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr "Minimum belső ár"
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr "Minimum költség a belső ársávok alapján"
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr "Maximum belső ár"
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr "Maximum költség a belső ársávok alapján"
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr "Minimum beszállítói ár"
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr "Minimum alkatrész ár a beszállítóktól"
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr "Maximum beszállítói ár"
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr "Maximum alkatrész ár a beszállítóktól"
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr "Minimum alkatrészváltozat ár"
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr "Alkatrészváltozatok számolt minimum költsége"
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr "Maximum alkatrészváltozat ár"
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr "Alkatrészváltozatok számolt maximum költsége"
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr "Minimum költség felülbírálása"
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr "Maximum költség felülbírálása"
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr "Számított általános minimum költség"
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr "Számított általános maximum költség"
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr "Minimum eladási ár"
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr "Minimum eladási ár az ársávok alapján"
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr "Maximum eladási ár"
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr "Maximum eladási ár az ársávok alapján"
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr "Minimum eladási költség"
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr "Eddigi minimum eladási ár"
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr "Maximum eladási költség"
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr "Eddigi maximum eladási ár"
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr "Leltározható alkatrész"
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr "Tételszám"
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr "Egyedi készlet tételek száma a leltárkor"
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr "Teljes készlet a leltárkor"
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Dátum"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr "Leltározva ekkor"
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "További megjegyzések"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr "Leltározta"
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr "Minimum készlet érték"
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr "Becsült minimum raktárkészlet érték"
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr "Maximum készlet érték"
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr "Becsült maximum raktárkészlet érték"
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr "Riport"
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr "Leltár riport fájl (generált)"
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr "Alkatrész szám"
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr "Leltározott alkatrészek száma"
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr "Felhasználó aki a leltár riportot kérte"
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
-msgstr ""
+msgstr "Alkatrész értékesítési ársáv"
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
-msgstr ""
+msgstr "Alkatrész Teszt Sablon"
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr "Hibás sablon név - legalább egy alfanumerikus karakter kötelező"
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr "A lehetőségek egyediek kell legyenek"
-#: part/models.py:3575
-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:3626
+msgid "Test templates can only be created for testable parts"
+msgstr "Teszt sablont csak ellenőrizhetőre beállított alkatrészhez lehet csinálni"
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr "Már létezik ilyen azonosítójú Teszt sablon ehhez az alkatrészhez"
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr "Teszt név"
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr "Add meg a teszt nevét"
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr "Teszt azonosító"
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr "Egyszerűsített Teszt azonosító"
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr "Teszt leírása"
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr "Adj hozzá egy leírást ehhez a teszthez"
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Engedélyezve"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr "Teszt engedélyezve?"
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr "Kötelező"
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr "Szükséges-e hogy ez a teszt sikeres legyen?"
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr "Kötelező érték"
-#: part/models.py:3635
+#: part/models.py:3686
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:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr "Kötelező melléklet"
-#: part/models.py:3642
+#: part/models.py:3693
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:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr "Lehetőségek"
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
-msgstr ""
+msgstr "Választható lehetőségek ehhez a Teszthez (vesszővel elválasztva)"
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
-msgstr ""
+msgstr "Alkatrész Paraméter Sablon"
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége"
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei"
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr "A paraméter sablon nevének egyedinek kell lennie"
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr "Paraméter neve"
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr "Paraméter mértékegysége"
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr "Paraméter leírása"
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr "Jelölőnégyzet"
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr "Ez a paraméter egy jelölőnégyzet?"
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Választható lehetőségek (vesszővel elválasztva)"
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
-msgstr ""
+msgstr "Alkatrész Paraméter"
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
-msgstr ""
+msgstr "Lezárt alkatrész Paramétere nem szerkeszthető"
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr "Hibás választás a paraméterre"
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr "Szülő alkatrész"
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Paraméter sablon"
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr "Paraméter értéke"
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
-msgstr ""
+msgstr "Alkatrészcsoport Paraméter Sablon"
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Alapértelmezett érték"
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr "Alapértelmezett paraméter érték"
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr "Alkatrész ID vagy alkatrész név"
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr "Egyedi alkatrész ID értéke"
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr "Alkatrész IPN érték"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr "Szint"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr "Alkatrészjegyzék szint"
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
-msgstr ""
+msgstr "Alkatrészjegyzék nem szerkeszthető mert az összeállítás le van zárva"
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
-msgstr ""
+msgstr "Alkatrészjegyzék nem szerkeszthető mert az összeállítás változat le van zárva"
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr "Szülő alkatrész kiválasztása"
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr "Al alkatrész"
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt"
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez"
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr "Ez az alkatrészjegyzék tétel opcionális"
-#: part/models.py:4266
+#: part/models.py:4323
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:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Többlet"
-#: part/models.py:4274
+#: part/models.py:4331
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:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr "Alkatrészjegyzék tétel azonosító"
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr "Alkatrészjegyzék tétel megjegyzései"
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr "Ellenőrző összeg"
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr "Alkatrészjegyzék sor ellenőrző összeg"
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr "Jóváhagyva"
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr "Ez a BOM tétel jóvá lett hagyva"
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr "Öröklődött"
-#: part/models.py:4308
+#: part/models.py:4365
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:4314
+#: part/models.py:4371
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:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
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:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr "Al alkatrészt kötelező megadni"
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr "Alkatrészjegyzék tétel helyettesítő"
-#: part/models.py:4572
+#: part/models.py:4634
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:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr "Szülő alkatrészjegyzék tétel"
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr "Helyettesítő alkatrész"
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr "1.rész"
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr "2.rész"
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr "Válassz kapcsolódó alkatrészt"
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr "Alkatrész kapcsolat nem hozható létre önmagával"
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr "Már létezik duplikált alkatrész kapcsolat"
#: part/serializers.py:124
msgid "Parent Category"
-msgstr ""
+msgstr "Szülő Kategória"
#: part/serializers.py:125 templates/js/translated/part.js:312
msgid "Parent part category"
@@ -7450,340 +7663,352 @@ msgstr "Eredmények"
msgid "Number of results recorded against this template"
msgstr "Eszerint a sablon szerint rögzített eredmények száma"
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr "Beszerzési pénzneme ennek a készlet tételnek"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr "Ennyi alkatrész használja ezt a sablont"
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr "Nincs kiválasztva alkatrész"
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr "Válassz kategóriát"
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr "Eredeti alkatrész"
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr "Válassz eredeti alkatrészt a másoláshoz"
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Kép másolása"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr "Kép másolása az eredeti alkatrészről"
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr "Alkatrészjegyzék másolása"
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr "Alkatrészjegyzék másolása az eredeti alkatrészről"
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Paraméterek másolása"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr "Paraméterek másolása az eredeti alkatrészről"
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr "Megjegyzések másolása"
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr "Megjegyzések másolása az eredeti alkatrészről"
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr "Kezdeti készlet mennyiség"
-#: part/serializers.py:514
+#: part/serializers.py:558
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:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr "Kezdeti készlet hely"
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr "Add meg a kezdeti készlet helyét"
-#: part/serializers.py:539
+#: part/serializers.py:583
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:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Válassz gyártót (hagyd üresen ha nem kell létrehozni)"
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr "Gyártói cikkszám"
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr "A kiválasztott cég nem érvényes beszállító"
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr "A kiválasztott cég nem érvényes gyártó"
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr "Van már ilyen gyártói alkatrész"
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr "Van már ilyen beszállítói alkatrész"
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
-msgstr ""
+msgstr "Verziók"
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr "Nem lefoglalt készlet"
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr "Variánsok Raktárkészlet"
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr "Alkatrész másolása"
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr "Kezdeti adatok másolása egy másik alkatrészről"
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr "Kezdeti készlet"
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr "Kezdeti készlet mennyiség létrehozása"
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr "Beszállító információ"
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr "Kezdeti beszállító adatok hozzáadása"
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr "Kategória paraméterek másolása"
-#: part/serializers.py:965
+#: part/serializers.py:1017
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:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr "Meglévő kép"
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr "A meglévő alkatrész képfájl neve"
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr "A képfájl nem létezik"
-#: part/serializers.py:1194
+#: part/serializers.py:1247
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:1204
+#: part/serializers.py:1257
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:1214
+#: part/serializers.py:1267
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:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr "Külső készlet nélkül"
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr "Külső helyeken lévő készlet nélkül"
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr "Riport létrehozása"
-#: part/serializers.py:1227
+#: part/serializers.py:1280
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:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr "Alaktrészek frissítése"
-#: part/serializers.py:1233
+#: part/serializers.py:1286
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:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr "Leltár funkció nincs engedélyezve"
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Háttér folyamat ellenőrzés sikertelen"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr "Számított minimum ár felülbírálása"
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr "Minimum ár pénzneme"
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr "Számított maximum ár felülbírálása"
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr "Maximum ár pénzneme"
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr "Frissítés"
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr "Alkatrész árak frissítése"
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Megadott pénznem átváltása {default_currency}-re sikertelen"
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr "A Minimum ár nem lehet nagyobb mint a Maximum ár"
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr "A Maximum ár nem lehet kisebb mint a Minimum ár"
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
-msgstr ""
+msgstr "Szülő összeállítás kiválasztása"
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
-msgstr ""
+msgstr "Összetevő neve"
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
-msgstr ""
+msgstr "Összetevő Cikkszám"
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
-msgstr ""
+msgstr "Összetevő Leírás"
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
-msgstr ""
+msgstr "Összetevő alkatrész kijelölése"
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr "Gyártható"
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk"
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr "Létező adat törlése"
-#: part/serializers.py:1846
+#: part/serializers.py:1908
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:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr "Örököltekkel együtt"
-#: part/serializers.py:1852
+#: part/serializers.py:1914
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:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr "Hibás sorok kihagyása"
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr "Engedély a hibás sorok kihagyására"
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr "Helyettesítő alkatrészek másolása"
-#: part/serializers.py:1864
+#: part/serializers.py:1926
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:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr "Meglévő alkatrészjegyzék törlése"
-#: part/serializers.py:1902
+#: part/serializers.py:1964
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:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr "Nincs megadva alkatrész oszlop"
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr "Több egyező alkatrész is található"
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr "Nincs egyező alkatrész"
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr "Az alkatrész nem lett összetevőként jelölve"
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr "Mennyiség nincs megadva"
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr "Érvénytelen mennyiség"
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr "Legalább egy alkatrészjegyzék tétel szükséges"
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr "Teljes mennyiség"
@@ -7933,9 +8158,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:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr "Leltár"
@@ -7949,7 +8174,7 @@ msgstr "Teszt sablon hozzáadása"
#: part/templates/part/detail.html:106
msgid "Part Test Statistics"
-msgstr ""
+msgstr "Alkatrész Ellenőrzési Statisztika"
#: part/templates/part/detail.html:155 stock/templates/stock/item.html:49
msgid "Sales Order Allocations"
@@ -8094,142 +8319,146 @@ msgstr "Fájlfomátum kiválasztása"
msgid "Part List"
msgstr "Alkatrész lista"
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
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:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "Értesítések kérése erre az alkatrészre"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Címke nyomtatása"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr "Árinformációk megjelenítése"
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr "Készlet műveletek"
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr "Készlet számolása"
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr "Készlet áthelyezése"
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr "Készlet műveletek"
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr "Alkatrész másolása"
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Alkatrész szerkesztése"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr "Alkatrész törlése"
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
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:123
+#: part/templates/part/part_base.html:124
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:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr "Használható más alkatrészek gyártásához"
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr "Készlet sorozatszám alapján követendő"
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr "Beszállítótól rendelhető"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr "Vevő által rendelhető, eladható"
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr "Az alkatrész nem aktív"
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr "Virtuális (nem kézzelfogható alkatrész)"
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr "Alkatrész részletei"
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr "Rendeléshez szükséges"
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr "Gyártáshoz lefoglalva"
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr "Vevő rendeléshez lefoglalva"
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr "Minimális készlet"
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr "Ártartomány"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr "Legutolsó sorozatszám"
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "Sorozatszámra keresés"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr "Alkatrész QR kódja"
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr "Vonalkód hozzárendelése az alkatrészhez"
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr "Számítás"
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr "Alkatrészhez rendelt kép eltávolítása"
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr "Nincs egyező kép"
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr "Részletek elrejtése"
@@ -8283,13 +8512,13 @@ msgid "Variants"
msgstr "Változatok"
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Készlet"
@@ -8325,17 +8554,17 @@ msgstr "Alkatrész árazás felülbírálása"
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Szerkesztés"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr "Utoljára módosítva"
@@ -8407,7 +8636,7 @@ msgid "Update Pricing"
msgstr "Árazás Frissítése"
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8487,7 +8716,7 @@ msgstr "Az alkatrész képe nem található"
msgid "Part Pricing"
msgstr "Alkatrész árak"
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr "Plugin nem törölhető mivel még aktív"
@@ -8499,78 +8728,85 @@ msgstr "Nincs megadva művelet"
msgid "No matching action found"
msgstr "Nincs egyező művelet"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Nincs egyező vonalkód"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Egyezés vonalkódra"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
-msgstr ""
+msgstr "Model nem támogatott"
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
-msgstr ""
+msgstr "Model példány hiányzik"
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr "Ez a vonalkód már egy másik tételé"
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr "Nem található megfelelő alkatrész adat"
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr "Nem található megfelelő beszállítói alkatrész"
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr "Több beszállítói alkatrész található"
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr "Beszállítói alkatrész található"
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr "Ez a termék már bevételezve"
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr "Beszállítói vonalkód nem található"
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr "Több egyező sortétel is található"
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr "Nincs egyező sortétel"
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr "Vonalkód nem egyezik egy létező készlet tétellel sem"
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr "Készlet tétel nem egyezik a sortétellel"
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr "Nincs elegendő"
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr "Készlet tétel lefoglalva egy vevői rendeléshez"
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr "Nincs elég információ"
@@ -8592,75 +8828,75 @@ msgstr "A '{order}' rendeléshez nem tartozik beszerzési rendelés"
msgid "Purchase order does not match supplier"
msgstr "A beszerzési rendelés nem egyezik a beszállítóval"
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr "Nem található függőben levő tétel a beszállítói alkatrészhez"
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr "A tétel bevételezéséhez további információ szükséges"
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr "Beszerzési rendelés tétele bevételezve"
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr "Beolvasott vonalkód"
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
-msgstr ""
+msgstr "Vonalkód generáláshoz kiválaszottt model neve"
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
-msgstr ""
+msgstr "A vonalkódnyomtatáshoz kiválaszott model objektum azonosítója"
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr "Tételekhez rendelendő Beszerzési Rendelés"
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr "Beszerzési rendelés nincs függőben"
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr "Bevételezési tételekhez rendelendő Beszerzési Rendelés"
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr "Beszerzési rendelés nincs elküdve"
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr "Bevételezés erre a készlet helyre"
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr "Struktúrális hely nem választható"
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr "Tételekhez rendelendő Vevői Rendelés"
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr "Vevői rendelés nincs függőben"
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr "Tételekhez rendelendő vevői rendelés sortétel"
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr "Tételekhez rendelendő vevői rendelés szállítmány"
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr "Szállítmány kiszállítva"
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr "Lefoglalandó mennyiség"
@@ -8678,6 +8914,42 @@ msgstr "A címke HTML nyomtatása sikertelen"
#: plugin/base/label/mixins.py:149
msgid "No items provided to print"
+msgstr "Nincs elem a nyomtatáshoz"
+
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
msgstr ""
#: plugin/builtin/barcodes/inventree_barcode.py:27
@@ -8701,27 +8973,27 @@ msgstr "InvenTree fejlesztők"
#: plugin/builtin/barcodes/inventree_barcode.py:34
msgid "Internal Barcode Format"
-msgstr ""
+msgstr "Belső Vonalkód Formátum"
#: plugin/builtin/barcodes/inventree_barcode.py:35
msgid "Select an internal barcode format"
-msgstr ""
+msgstr "Belső vonalkód formátum kiválasztása"
#: plugin/builtin/barcodes/inventree_barcode.py:37
msgid "JSON barcodes (human readable)"
-msgstr ""
+msgstr "JSON vonalkód (olvasható)"
#: plugin/builtin/barcodes/inventree_barcode.py:38
msgid "Short barcodes (space optimized)"
-msgstr ""
+msgstr "Rövid vonalkód (tömörebb)"
#: plugin/builtin/barcodes/inventree_barcode.py:43
msgid "Short Barcode Prefix"
-msgstr ""
+msgstr "Rövid Vonalkód Előtag"
#: plugin/builtin/barcodes/inventree_barcode.py:45
msgid "Customize the prefix used for short barcodes, may be useful for environments with multiple InvenTree instances"
-msgstr ""
+msgstr "A rövid vonalkódok előtagjának beállítása hasznos lehet, ha több InvenTree példányt is használnak egy környezetben"
#: plugin/builtin/integration/core_notifications.py:34
msgid "InvenTree Notifications"
@@ -8757,7 +9029,7 @@ 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:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr "Link megnyitása"
@@ -8795,11 +9067,11 @@ msgstr "InvenTree címkenyomtató"
msgid "Provides support for printing using a machine"
msgstr "Nyomtatási támogatást nyújt egy Berendezés által"
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr "utoljára használva"
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr "Opciók"
@@ -8823,7 +9095,7 @@ msgstr "Szegély"
msgid "Print a border around each label"
msgstr "Az egyes címkék körüli margó"
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr "Fekvő"
@@ -8895,19 +9167,19 @@ msgstr "TME vonalkódok támogatása"
msgid "The Supplier which acts as 'TME'"
msgstr "A 'TME' beszállító"
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr "Csak a személyzeti felhasználók adminisztrálhatják a pluginokat"
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr "Plugin telepítés letiltva"
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr "Plugin telepítése sikeres"
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr "Plugin telepítve ide: {path}"
@@ -8944,10 +9216,6 @@ msgstr "Plugin beállítás"
msgid "Plugin Configurations"
msgstr "Plugin beállítások"
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr "Kulcs"
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr "Plugin kulcsa"
@@ -8956,7 +9224,7 @@ msgstr "Plugin kulcsa"
msgid "PluginName of the plugin"
msgstr "PluginNeve a pluginnak"
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr "Csomag neve"
@@ -8985,17 +9253,17 @@ msgstr "Beépített plugin"
msgid "Package Plugin"
msgstr "Csomag plugin"
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr "Bővítmény"
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr "Módszer"
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr "Nincs szerző"
@@ -9054,81 +9322,157 @@ msgstr "Minta árfolyamváltó plugin"
msgid "InvenTree Contributors"
msgstr "InvenTree fejlesztők"
-#: plugin/serializers.py:81
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr ""
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
msgid "Source URL"
msgstr "Forrás URL"
-#: plugin/serializers.py:83
+#: plugin/serializers.py:108
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:92
+#: plugin/serializers.py:117
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:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr "Verzió"
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr "Verzió azonosító a pluginhoz. Hagyd üresen a legújabb verzióhoz."
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr "Bővítmény telepítésének megerősítése"
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
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:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr "Tlepítés nincs megerősítve"
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr "Vagy csomag nevet vagy URL-t meg kell adni"
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr "Teljes újratöltés"
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr "A plugin tárolók teljes újratöltése"
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr "Kényszerített újratöltés"
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr "Akkor is töltse újra a plugin tárolót ha már be lett töltve"
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr "Pluginok begyűjtése"
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr "Pluginok begyűjtése és a tárolóhoz adása"
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr "Plugin aktiválása"
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr "Plugin bekapcsolása"
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr "Konfiguráció törlése"
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr "Plugin konfiguráció törlése az adatbázisból"
@@ -9136,39 +9480,43 @@ msgstr "Plugin konfiguráció törlése az adatbázisból"
msgid "No valid objects provided to template"
msgstr "Nincs érvényes objektum megadva a sablonhoz"
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr "Tételek"
#: report/api.py:180
msgid "Plugin not found"
-msgstr ""
+msgstr "Plugin nem található"
#: report/api.py:182
msgid "Plugin is not active"
-msgstr ""
+msgstr "Plugin nem aktív"
#: report/api.py:184
msgid "Plugin does not support label printing"
-msgstr ""
+msgstr "Plugin nem támogatja a címkenyomtatást"
#: report/api.py:233
msgid "Invalid label dimensions"
-msgstr ""
+msgstr "Érvénytelen címke méretek"
#: report/api.py:248 report/api.py:329
msgid "No valid items provided to template"
-msgstr ""
+msgstr "Nincs érvényes tétel megadva a sablonhoz"
#: report/api.py:283
msgid "Error printing label"
msgstr "Címkenyomtatási hiba"
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, 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"
@@ -9191,7 +9539,7 @@ msgstr "„Letter” méret"
#: report/models.py:118
msgid "Template file with this name already exists"
-msgstr ""
+msgstr "Ilyen nevű Sablon fájl már létezik"
#: report/models.py:150
msgid "Template name"
@@ -9199,143 +9547,151 @@ msgstr "Sablon neve"
#: report/models.py:156
msgid "Template description"
-msgstr ""
+msgstr "Sablon leírása"
#: report/models.py:162
msgid "Revision number (auto-increments)"
+msgstr "Verziószám (automatikusan nő)"
+
+#: report/models.py:168
+msgid "Attach to Model on Print"
msgstr ""
-#: report/models.py:202
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Fájlnév minta"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
-msgstr ""
+msgstr "Minta a fájlnevek előállításához"
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
-msgstr ""
+msgstr "Sablon engedélyezve"
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
-msgstr ""
+msgstr "A sablon által célzott model típus"
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Szűrők"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
-msgstr ""
+msgstr "Sablon lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)"
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
-msgstr ""
+msgstr "Sablon file"
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr "Lapméret a PDF riportokhoz"
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr "Jelentés fekvő nézetben"
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Szélesség [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Címke szélessége, mm-ben"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Magasság [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Címke magassága, mm-ben"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
-msgstr ""
+msgstr "Feldolgozandó elemek száma"
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
-msgstr ""
+msgstr "Jelentés készítés befejezve"
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr "Haladás"
-#: report/models.py:448
-msgid "Report generation progress"
-msgstr ""
-
#: report/models.py:456
-msgid "Report Template"
-msgstr ""
+msgid "Report generation progress"
+msgstr "Jelentés készítés állapota"
-#: report/models.py:463 report/models.py:486
+#: report/models.py:464
+msgid "Report Template"
+msgstr "Jelentéssablon"
+
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr "Kimeneti Fájl"
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
-msgstr ""
+msgstr "Generált kimeneti állomány"
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
-msgstr ""
+msgstr "Címke előállító plugin"
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
-msgstr ""
+msgstr "Címke sablon"
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr "Részlet"
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr "Riport részlet fájl"
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr "Részlet fájl leírása"
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr "Eszköz"
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr "Riport asset fájl"
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr "Asset fájl leírása"
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
-msgstr ""
+msgstr "Riport sablon kiválasztása"
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
-msgstr ""
+msgstr "A jelentésben levő tételek azonosítója"
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr "Címke sablon választás"
-#: report/serializers.py:140
-msgid "Printing Plugin"
-msgstr ""
-
#: report/serializers.py:141
+msgid "Printing Plugin"
+msgstr "Nyomtató plugin"
+
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
-msgstr ""
+msgstr "Címkenyomtató plugin kiválasztása"
#: report/templates/label/part_label.html:31
#: report/templates/label/stockitem_qr.html:21
@@ -9366,9 +9722,9 @@ msgstr "Beszállító törölve lett"
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr "Egységár"
@@ -9380,13 +9736,18 @@ msgstr "Egyéb tételek"
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr "Összesen"
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr "Foglalások"
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr "Készlethely tételek"
@@ -9404,15 +9765,13 @@ msgstr "Teszt eredmények"
msgid "Test"
msgstr "Teszt"
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr "Eredmény"
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr "Sikeres"
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr "Sikertelen"
@@ -9421,17 +9780,18 @@ msgid "No result (required)"
msgstr "Nincs eredmény (szükséges)"
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr "Nincs eredmény"
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr "Beépített tételek"
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr "Sorozatszám"
@@ -9451,67 +9811,67 @@ msgstr "part_image elem csak alkatrész példánynál használható"
msgid "company_image tag requires a Company instance"
msgstr "company_image elem csak cég példánynál használható"
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr "Hely ID"
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr "Hely elérési út"
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr "Készlet tétel ID"
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr "Státuszkód"
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr "Beszállítói cikkszám"
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
-msgstr ""
+msgstr "Beszállítói cikkszám"
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr "Beszállító ID"
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr "Vevő ID"
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr "Beépítve ebbe"
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr "Gyártás ID"
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr "Vevői rendelés ID"
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr "Vevői rendelés azonosító"
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr "Felülvizsgálat szükséges"
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr "Törlés ha kimerül"
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr "Lejárati dátum"
@@ -9521,17 +9881,17 @@ msgstr "Hely mélységre szűrés"
#: stock/api.py:330
msgid "Filter by top-level locations"
-msgstr ""
+msgstr "Csúcs készlethelyre szűrés"
#: stock/api.py:345
msgid "Include sub-locations in filtered results"
msgstr "Szűrt eredmények tartalmazzák az alhelyeket"
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr "Szülő hely"
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr "Szülő helyre szűrés"
@@ -9551,8 +9911,8 @@ msgstr "Lejárat előtt"
msgid "Expiry date after"
msgstr "Lejárat után"
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr "Állott"
@@ -9561,594 +9921,598 @@ msgstr "Állott"
msgid "Quantity is required"
msgstr "Mennyiség megadása kötelező"
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr "Egy érvényes alkatrészt meg kell adni"
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr "A megadott beszállítói alkatrész nem létezik"
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "A beszállítói alkatrészhez van megadva csomagolási mennyiség, de a use_pack_size flag nincs beállítva"
-#: stock/api.py:1005
+#: stock/api.py:996
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:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr "Készlethely típus"
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr "Készlethely típusok"
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr "Alapértelmezett ikon azokhoz a helyekhez, melyeknek nincs ikonja beállítva (válaszható)"
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Készlet hely"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Készlethelyek"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr "Tulajdonos"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr "Tulajdonos kiválasztása"
-#: stock/models.py:189
+#: stock/models.py:195
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:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr "Külső"
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr "Ez egy külső készlethely"
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr "Helyszín típusa"
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr "Tárolóhely típus"
-#: stock/models.py:279
+#: stock/models.py:285
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:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr "A szerkezeti raktári helyre nem lehet készletet felvenni!"
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr "Virtuális alkatrészből nem lehet készletet létrehozni"
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr "A beszállítói alkatrész típusa ('{self.supplier_part.part}') mindenképpen {self.part} kellene, hogy legyen"
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
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:721
+#: stock/models.py:798
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:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr "A tétel nem tartozhat saját magához"
-#: stock/models.py:748
+#: stock/models.py:825
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:761
+#: stock/models.py:838
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:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr "Szülő készlet tétel"
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr "Kiindulási alkatrész"
-#: stock/models.py:799
+#: stock/models.py:876
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:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr "Hol található ez az alkatrész?"
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
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:830
+#: stock/models.py:907
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:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr "Sorozatszám ehhez a tételhez"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr "Batch kód ehhez a készlet tételhez"
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr "Készlet mennyiség"
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr "Forrás gyártás"
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr "Gyártás ehhez a készlet tételhez"
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr "Felhasználva ebben"
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr "Felhasználva ebben a gyártásban"
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr "Forrás beszerzési rendelés"
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr "Beszerzés ehhez a készlet tételhez"
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr "Cél vevői rendelés"
-#: stock/models.py:921
+#: stock/models.py:998
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:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr "Törlés ha kimerül"
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr "Készlet tétel törlése ha kimerül"
-#: stock/models.py:960
+#: stock/models.py:1037
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:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr "Alkatrésszé alakítva"
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr "Az alkatrész nem követésre kötelezett"
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr "Mennyiség egész szám kell legyen"
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr "A mennyiség nem haladhatja meg az elérhető készletet ({self.quantity})"
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
-msgstr "A sorozatszám egész számok listája kell legyen"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "A sorozatszámok már léteznek"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr "Ez a Teszt sablon nem létezik"
-#: stock/models.py:1659
+#: stock/models.py:1765
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:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr "Készlet tétel beépül egy másikba"
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr "A készlet tétel más tételeket tartalmaz"
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr "Készlet tétel gyártás alatt"
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr "Követésre kötelezett készlet nem vonható össze"
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr "Duplikált készlet tételek vannak"
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr "A készlet tétel ugyanarra az alkatrészre kell vonatkozzon"
-#: stock/models.py:1694
+#: stock/models.py:1800
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:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr "Készlet tételek állapotainak egyeznie kell"
-#: stock/models.py:1960
+#: stock/models.py:2066
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:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
-msgstr ""
+msgstr "Készlettörténet"
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr "Bejegyzés megjegyzései"
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
-msgstr ""
+msgstr "Készlet Tétel Ellenőrzés Eredménye"
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr "Ehhez a teszthez meg kell adni értéket"
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr "Ehhez a teszthez fel kell tölteni mellékletet"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
-msgstr ""
+msgstr "A teszt eredménye érvénytelen"
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr "Teszt eredménye"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr "Teszt kimeneti értéke"
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr "Teszt eredmény melléklet"
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr "Tesztek megjegyzései"
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr "Teszt állomás"
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr "A tesztet elvégző tesztállomás azonosítója"
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr "Elkezdődött"
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr "A teszt indításának időpontja"
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr "Befejezve"
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr "A teszt befejezésének időpontja"
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
-msgstr ""
+msgstr "Generált köteg kód"
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
-msgstr ""
+msgstr "Gyártási rendelés kiválasztása"
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
-msgstr ""
+msgstr "Készlettétel amihez a köteg kódot generáljuk"
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
-msgstr ""
+msgstr "Készlethely amihez a köteg kódot generáljuk"
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
-msgstr ""
+msgstr "Alkatrész amihez a köteg kódot generáljuk"
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
-msgstr ""
+msgstr "Beszerzési rendelés kiválasztása"
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
-msgstr ""
+msgstr "Adja meg a mennyiséget a köteg kódhoz"
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
-msgstr ""
+msgstr "Generált sorozatszám"
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
-msgstr ""
+msgstr "Válassza ki az alkatrészt amihez sorozatszámot akar generálni"
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
-msgstr ""
+msgstr "Hány sorozatszámot generáljunk"
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr "Az eredmény Teszt sablonja"
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr "Sablon azonosító vagy Teszt név szükséges"
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr "A tesztet nem lehet a kezdésnél hamarabb befejezni"
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr "Szériaszám túl nagy"
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr "Szülő tétel"
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
-msgstr ""
+msgstr "Szülő készlet tétel"
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr "Csomagolási mennyiség használata: a megadott mennyiség ennyi csomag"
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr "Lejárt"
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr "Gyermek tételek"
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
-msgstr ""
+msgstr "Nyilvántartott tételek"
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr "Készlet tétel beszerzési ára, per darab vagy csomag"
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
-msgstr ""
+msgstr "Minimum árazás"
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
-msgstr ""
+msgstr "Maximum árazás"
-#: stock/serializers.py:661
+#: stock/serializers.py:688
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:674
+#: stock/serializers.py:701
#, 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:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr "Írd be a sorozatszámokat az új tételekhez"
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr "Cél készlet hely"
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr "Opcionális megjegyzés mező"
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez"
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "A sorozatszámok már léteznek"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr "Válaszd ki a beépítésre szánt készlet tételt"
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr "Beépítendő mennyiség"
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr "Adja meg a beépítendő mennyiséget"
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr "Tranzakció megjegyzés hozzáadása (opcionális)"
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr "A beépítendő mennyiség legalább 1 legyen"
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr "Készlet tétel nem elérhető"
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben"
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr "A beépítendő mennyiség nem haladhatja meg az elérhető mennyiséget"
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr "Cél hely a kiszedett tételeknek"
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
-msgstr ""
+msgstr "Nem támogatott statisztikai típus: "
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr "Válassz alkatrészt amire konvertáljuk a készletet"
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz"
-#: stock/serializers.py:947
+#: stock/serializers.py:978
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:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr "Cél hely a visszatérő tételeknek"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
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:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr "Nincs készlet tétel kiválasztva"
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Alhelyek"
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr "Felsőbb szintű készlet hely"
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr "Az alkatrésznek értékesíthetőnek kell lennie"
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr "A tétel egy vevő rendeléshez foglalt"
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr "A tétel egy gyártási utasításhoz foglalt"
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr "Vevő akihez rendeljük a készlet tételeket"
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr "A kiválasztott cég nem egy vevő"
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr "Készlet hozzárendelés megjegyzései"
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr "A készlet tételek listáját meg kell adni"
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr "Készlet összevonás megjegyzései"
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr "Nem egyező beszállítók megengedése"
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
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:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr "Nem egyező állapotok megjelenítése"
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
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:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr "Legalább két készlet tételt meg kell adni"
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr "Nincs változás"
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr "Készlet tétel elsődleges kulcs értéke"
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr "Készlet tétel státusz kódja"
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr "Készlet tranzakció megjegyzései"
@@ -10176,107 +10540,107 @@ msgstr "Elutasított"
msgid "Quarantined"
msgstr "Karanténban"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Örökölt készlet követési bejegyzés"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Készlet tétel létrehozva"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Szerkeszett készlet tétel"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Hozzárendelt sorozatszám"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Készlet leleltározva"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Készlet manuálisan hozzáadva"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Készlet manuálisan elvéve"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Hely megváltozott"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Készletadatok frissítve"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Gyártmányba beépült"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Gyártmányból eltávolítva"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Beépült összetevő tétel"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Eltávolított összetevő tétel"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Szülő tételből szétválasztva"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Szétválasztott gyermek tétel"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Összevont készlet tétel"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Alkatrészváltozattá alakítva"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Gyártási utasítás kimenete elkészült"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Gyártási utasítás kimenete kész"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Gyártási utasítás kimenete elutasítva"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Gyártásra felhasználva"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Vevői rendelésre kiszállítva"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Megrendelésre érkezett"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Visszavéve"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Vevőnek kiszállítva"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Vevőtől visszaérkezett"
@@ -10297,7 +10661,7 @@ msgstr "Ez a készlet tétel nem tartalmaz egy altételt sem"
msgid "Test Data"
msgstr "Teszt adatok"
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr "Teszt riport"
@@ -10317,7 +10681,7 @@ msgstr "Készlet tétel megjegyzések"
msgid "Installed Stock Items"
msgstr "Beépített készlet tételek"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr "Készlet tétel beépítése"
@@ -10329,208 +10693,212 @@ msgstr "Készlet tétel összes teszt eredményének törlése"
msgid "Add Test Result"
msgstr "Teszt eredmény hozzáadása"
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr "Készlet tétel keresése"
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr "Áthelyezés kódolvasással"
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr "Nyomtatási műveletek"
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr "Jelentés nyomtatása"
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr "Készlet módosítási műveletek"
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr "Leltározás"
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr "Készlet növelése"
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr "Készlet csökkentése"
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr "Sorozatszámok előállítása"
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr "Készlet áthelyezése"
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr "Vevőhöz rendelése"
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr "Visszavétel készletre"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr "Készlet tétel kiszedése"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr "Kiszedés"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr "Készlet tétel beépítése"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr "Beépítés"
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr "Változattá alakítás"
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr "Készlet tétel másolása"
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr "Készlet tétel szerkesztése"
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr "Készlet tétel törlése"
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Gyártás"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr "Nincs beállítva gyártó"
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:252
-#: stock/templates/stock/location.html:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr "Csak olvasható"
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr "Ez a készlet tétel nem elérhető"
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
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:272
+#: stock/templates/stock/item_base.html:269
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:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr "Foglalva ehhez a vevői rendeléshez"
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
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:311
+#: stock/templates/stock/item_base.html:308
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:317
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "előző oldal"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr "Menj az előző sorozatszámhoz"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr "követkető oldal"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr "Menj a következő sorozatszámhoz"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr "Nincs beállítva hely"
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr "Tesztek"
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
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:437
+#: stock/templates/stock/item_base.html:434
#, 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:439
+#: stock/templates/stock/item_base.html:436
#, 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:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr "Még nem volt leltározva"
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr "készlet tétel"
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr "Készlet állapot szerkesztése"
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr "Készlet tétel QR kódja"
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr "Vonalkód hozzárendelése a készlet tételhez"
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
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:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr "Figyelem"
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr "Ez a művelet nem vonható vissza könnyen"
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr "Készlet tétel konvertálása"
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr "Visszavétel készletre"
@@ -10542,84 +10910,84 @@ 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:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr "Készlethely leltározása"
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr "Készlet hely keresése"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr "Készlet bevételezése erre a helyre"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr "Készlet vonalkódok beolvasása"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr "Készlet tároló bevételezése erre a helyre"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr "Tároló vonalkód beolvasása"
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr "Készlethely riport nyomtatása"
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr "Hely műveletek"
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr "Hely szerkesztése"
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr "Hely törlése"
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr "Legfelső szintű készlet hely"
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr "Hely tulajdonosa"
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
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:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
-msgstr ""
+msgstr "Készlethely Típus"
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr "Új készlet hely létrehozása"
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr "Új hely"
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr "készlet hely"
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr "Készlet tároló bevételezve erre a helyre"
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr "Készlet hely QR kódja"
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr "Vonalkód hozzárendelése a készlet helyhez"
@@ -10631,10 +10999,6 @@ msgstr "Betöltés..."
msgid "Stock Tracking"
msgstr "Készlettörténet"
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr "Foglalások"
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr "Hozzáférés megtagadva"
@@ -11108,9 +11472,9 @@ msgid "Rate"
msgstr "Árfolyam"
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Törlés"
@@ -11131,7 +11495,7 @@ msgid "No project codes found"
msgstr "Nem találhatók projektszámok"
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr "csoport"
@@ -11197,7 +11561,7 @@ msgid "Delete Location Type"
msgstr "Készlethely típus törlése"
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr "Új készlethely típus"
@@ -11254,7 +11618,7 @@ msgstr "Vevő rendelés beállításai"
msgid "Stock Settings"
msgstr "Készlet beállítások"
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr "Készlethely típusok"
@@ -11281,7 +11645,7 @@ msgid "Unverified"
msgstr "Nem ellenőrzött"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr "Elsődleges"
@@ -11533,7 +11897,7 @@ msgid "Submit Bug Report"
msgstr "Hibabejelentés küldése"
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr "vágólapra másolás"
@@ -11713,7 +12077,7 @@ msgstr "Olvasd be a lenti QR kódot egy kiválaszott token generátorral (péld
#: templates/allauth_2fa/setup.html:20
msgid "Secret: "
-msgstr ""
+msgstr "Titok: "
#: templates/allauth_2fa/setup.html:24
msgid "Step 2"
@@ -11739,23 +12103,24 @@ msgstr "Melléklet hozzáadása"
msgid "Barcode Identifier"
msgstr "Vonalkód azonosító"
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr "Kiszolgáló újraindítása szükséges"
-#: templates/base.html:106
+#: templates/base.html:105
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:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
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
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr "Függőben levő adatbázis migrációk"
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr "Törődést igénylő függőben levő adatbázis migrációk találhatók"
@@ -11788,7 +12153,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:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr "Szükséges mennyiség"
@@ -11802,7 +12167,7 @@ msgid "Click on the following link to view this part"
msgstr "Klikk a következő linkre az alkatrész megjelenítéséhez"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr "Minimum mennyiség"
@@ -12040,7 +12405,7 @@ msgstr "Sor adat"
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr "Bezárás"
@@ -12157,7 +12522,7 @@ msgstr "Alkatrészjegyzék betöltése az al-gyártmányhoz"
msgid "Substitutes Available"
msgstr "Vannak helyettesítők"
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr "Készletváltozatok engedélyezve"
@@ -12177,30 +12542,30 @@ msgstr "Alkatrészjegyzék árazása nem teljes"
msgid "No pricing available"
msgstr "Nincsenek árak"
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr "Külső raktárkészlet"
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr "Nincs szabad"
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr "Változatokkal és helyettesítőkkel együtt"
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr "Változatokkal együtt"
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr "Helyettesítőkkel együtt"
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr "Fogyóeszköz tétel"
@@ -12232,7 +12597,7 @@ msgstr "Alkatrészjegyzék megtekintése"
msgid "No BOM items found"
msgstr "Nem találhatók alkatrészjegyzék tételek"
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr "Szükséges alkatrész"
@@ -12244,396 +12609,396 @@ msgstr "Örökölve a szülő alkatrészjegyzéktől"
msgid "Edit Build Order"
msgstr "Gyártási utasítás szerkesztése"
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr "Gyártási utasítás létrehozása"
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr "Gyártási utasítás törlése"
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
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:238
+#: templates/js/translated/build.js:241
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:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr "Ennek a gyártásnak befejezetlen kimenetei vannak"
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
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:305
+#: templates/js/translated/build.js:308
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:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr "Gyártási utasítás befejezetlen"
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr "Gyártási utasítás befejezése"
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr "Következő szabad sorozatszám"
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr "Legutolsó sorozatszám"
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
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:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr "A gyártási kimeneteket egyesével kell előállítani"
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
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:390
+#: templates/js/translated/build.js:393
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:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr "Gyártási kimenet létrehozása"
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
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:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr "Készlet felszabadítása a gyártási kimenetből"
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr "Gyártási kimenet befejezése"
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr "Gyártási kimenet selejtezése"
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr "Gyártási kimenet törlése"
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
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:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr "Készlet tételek felszabadítása"
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr "Gyártási kimenetek kiválasztása"
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
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:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr "A kiválasztott gyártási kimenetek késznek lesznek jelölve"
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr "Kimenet"
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr "Gyártási kimenetek befejezése"
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr "A kiválasztott gyártási kimenetek selejtnek lesznek jelölve"
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr "Selejtezett kimenetek elutasítottnak jelölve"
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr "A lefoglalt készlet már nem lesz elérhető"
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr "A befejezési státusza a gyártásnak nem fog változni"
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr "Gyártási kimenetek selejtezése"
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr "A kiválasztott gyártási kimenetek törölve lesznek"
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr "A gyártási kimenet adatai véglegesen törölve lesznek"
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr "A lefoglalt készlet tételek újra készletre kerülnek"
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr "Gyártási kimenetek törlése"
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
-msgstr ""
+msgstr "Hozzárendelések törlése"
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
-msgstr ""
+msgstr "Hozzárendelt Készletek Törlése"
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
-msgstr ""
+msgstr "Nincsen hozzárendelt készlet"
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
-msgstr ""
+msgstr "Készlet tétel"
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
-msgstr ""
+msgstr "Gyártási készlet foglalások szerkesztése"
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
-msgstr ""
+msgstr "Gyártási készlet foglalások törlése"
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
-msgstr ""
+msgstr "Gyártási Készlet Foglalások Szerkesztése"
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
-msgstr ""
+msgstr "Gyártási Készlet Foglalások Törlése"
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr "Nincs gyártási utasításhoz történő foglalás"
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr "Hely nincs megadva"
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr "Kimenetek befejezése"
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr "Kimenetek selejtezése"
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr "Kimenetek törlése"
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr "gyártás kimenet"
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr "gyártás kimenetek"
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr "Gyártási kimenet műveletei"
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr "Nem található aktív gyártási kimenet"
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr "Lefoglalt sorok"
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr "Szükséges tesztek"
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr "Válassz alkatrészeket"
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
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:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr "Készlet foglalási mennyiség megadása"
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr "Minden alkatrész lefoglalva"
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr "Minden kiválasztott alkatrész teljesen lefoglalva"
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
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:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr "Készlet foglalása a gyártási utasításhoz"
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr "Nincs egyező készlethely"
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr "Nincs egyező készlet"
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr "Automatikus készlet foglalás"
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
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:2117
+#: templates/js/translated/build.js:2120
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:2118
+#: templates/js/translated/build.js:2121
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:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr "Készlet tételek foglalása"
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr "Nincs a lekérdezéssel egyező gyártási utasítás"
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr "Kiválaszt"
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr "Gyártás késésben van"
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr "Nincs felhasználói információ"
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr "Készlet foglalások szerkesztése"
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr "Készlet foglalások törlése"
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr "Foglalás szerkesztése"
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr "Foglalás törlése"
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr "gyártás sor"
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr "gyártás sorok"
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr "Nincsenek gyártási sorok"
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr "Követésre kötelezett alkatrész"
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
-msgstr ""
+msgstr "Öröklődik"
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr "Mennyiségi egység"
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr "Van elegendő"
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr "Fogyóeszköz tétel"
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr "Követett tétel"
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr "Egyedileg nyilvántartott tételek lefoglalása egyedi gyártási kimenetekhez"
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr "Gyártási készlet"
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr "Készlet rendelés"
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr "Lefoglalt készlet"
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr "Készlet foglalások törlése"
@@ -12642,7 +13007,7 @@ msgid "Add Manufacturer"
msgstr "Gyártó hozzáadása"
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr "Gyártói alkatrész hozzáadása"
@@ -12650,231 +13015,231 @@ msgstr "Gyártói alkatrész hozzáadása"
msgid "Edit Manufacturer Part"
msgstr "Gyártói alkatrész szerkesztése"
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr "Beszállító hozzáadása"
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr "Beszállítói alkatrész hozzáadása"
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
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:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr "Beszállítói alkatrészek törlése"
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr "Új cég hozzáadása"
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr "Beszállított alkatrészek"
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr "Gyártott alkatrészek"
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr "Nem található céginformáció"
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr "Új névjegy létrehozása"
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr "Névjegy szerkesztése"
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr "A kiválasztott névjegyek törlésre kerülnek"
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr "Szerepkör"
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr "Névjegyek törlése"
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr "Nem található névjegy"
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr "Telefonszám"
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr "E-mail cím"
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr "Névjegy törlése"
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr "Új cím létrehozása"
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr "Cím szerkesztése"
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr "Az összes kijelölt cím törlésre kerül"
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr "Címek törlése"
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr "Nincsenek címek"
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr "Város"
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr "Állam/Megye"
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr "Futár megjegyzések"
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr "Belső megjegyzések"
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr "Cím törlése"
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
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:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr "Gyártói alkatrészek törlése"
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr "Az összes kijelölt paraméter törlésre kerül"
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr "Paraméterek törlése"
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr "Alkatrész rendelés"
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr "Gyártói alkatrészek törlése"
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr "Gyártói alkatrész műveletek"
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr "Nincs gyártói alkatrész"
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr "Sablon alkatrész"
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr "Gyártmány alkatrész"
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr "Nem található paraméter"
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr "Paraméter szerkesztése"
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr "Paraméter törlése"
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr "Paraméter szerkesztése"
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr "Paraméter törlése"
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr "Beszállítói alkatrész törlése"
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr "Nincs beszállítói alkatrész"
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr "Egység"
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr "Elérhetőség"
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr "Beszállítói alkatrész szerkesztése"
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr "Beszállítói alkatrész törlése"
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr "Ársáv törlése"
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr "Ársáv szerkesztése"
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr "Nincs ársáv információ"
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr "Utoljára módosítva"
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr "Ársáv szerkesztése"
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr "Ársáv törlése"
@@ -12978,19 +13343,19 @@ msgstr "Mező név"
msgid "Select Columns"
msgstr "Oszlopok kiválasztása"
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr "IGEN"
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr "NEM"
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr "Igaz"
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr "Hamis"
@@ -13105,11 +13470,11 @@ msgstr "Az értesítések itt fognak megjelenni"
#: templates/js/translated/order.js:48
msgid "Hold Order"
-msgstr ""
+msgstr "Rendelés felfüggesztése"
#: templates/js/translated/order.js:53
msgid "Are you sure you wish to place this order on hold?"
-msgstr ""
+msgstr "Biztosan felfüggeszti ennek a rendelésnek a kivitelezését?"
#: templates/js/translated/order.js:114
msgid "Add Extra Line Item"
@@ -13132,7 +13497,7 @@ msgid "Delete Line"
msgstr "Sor törlése"
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr "Nem találhatók sortételek"
@@ -13367,19 +13732,19 @@ msgid "Delete Part Parameter Template"
msgstr "Alkatrész paraméter sablon törlése"
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr "Nem található beszerzési rendelés"
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr "Ez a sortétel késésben van"
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr "Sortétel bevételezése"
@@ -13420,7 +13785,7 @@ msgid "No category"
msgstr "Nincs kategória"
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr "Megjelenítés listaként"
@@ -13432,7 +13797,7 @@ msgstr "Megjelenítés rácsnézetként"
msgid "No subcategories found"
msgstr "Nem találhatóak alkategóriák"
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr "Megjelenítés fában"
@@ -13454,11 +13819,11 @@ msgstr "találat"
#: templates/js/translated/part.js:2955
msgid "Edit test template"
-msgstr ""
+msgstr "Teszt sablon szerkesztése"
#: templates/js/translated/part.js:2956
msgid "Delete test template"
-msgstr ""
+msgstr "Teszt sablon törlése"
#: templates/js/translated/part.js:2960
msgid "This test is defined for a parent part"
@@ -13484,23 +13849,23 @@ msgstr "A megadott dátum a múltban van"
msgid "Speculative"
msgstr "Spekulatív"
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
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:3134
+#: templates/js/translated/part.js:3150
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:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr "Ütemezett készlet mennyiség"
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr "Maximum mennyiség"
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr "Minimális készlet"
@@ -13576,274 +13941,250 @@ msgstr "Nincsenek beszerzési ár előzmények"
msgid "Purchase Price History"
msgstr "Beszerzési ár előzmények"
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr "Nincsenek eladási ár előzmények"
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr "Eladási ár előzmények"
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr "Nincs alkatrészváltozat infomáció"
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr "Alkatrészváltozat"
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr "Válaszd ki a lemásolandó beszerzési rendelést"
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr "Sortételek másolása"
-
-#: templates/js/translated/purchase_order.js:177
-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:184
-msgid "Duplicate Extra Lines"
-msgstr "Egyéb tételek másolása"
-
-#: templates/js/translated/purchase_order.js:185
-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:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr "Beszerzési rendelés szerkesztése"
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr "Másolási opciók"
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr "Beszerzési rendelés befejezése"
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr "Rendelés befejezettnek jelölése?"
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr "Minden sortétel megérkezett"
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
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:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr "A rendelés befejezettnek jelölésével annak adatai és sortételei a továbbiakban már nem lesznek szerkeszthetők."
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr "Beszerzési rendelés törlése"
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
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:494
+#: templates/js/translated/purchase_order.js:477
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:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
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:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr "Beszerzési rendelés kiküldése"
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
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:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr "Rendelendő mennyiség"
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr "Új beszállítói alkatrész"
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr "Új beszerzési rendelés"
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr "Hozzáadás beszerzési rendeléshez"
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr "Összevonás"
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr "Nincsenek egyező beszállítói alkatrészek"
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr "Nincsenek egyező beszerzési rendelések"
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr "Sortételek kiválasztása"
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
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:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr "Beérkezett mennyiség"
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr "Érkező mennyiség"
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
-msgstr ""
+msgstr "Bejövő készlet tételek csomagolásának meghatározása"
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr "Készlet állapota"
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr "Vonalkód hozzáadása"
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr "Vonalkód eltávolítása"
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr "Add meg a helyet"
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr "Batch kód hozzáadása"
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
-msgstr ""
+msgstr "Csomagolás meghatározása"
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr "Sorozatszám hozzáadása"
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
-msgstr ""
+msgstr "Jegyzet hozzáfűzése"
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr "Sorozatszámok"
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr "Rendelési kód"
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr "Érkező mennyiség"
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr "Bevételezés megerősítése"
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr "Beszerzési rendelés tételeinek bevételezése"
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr "Tétel vonalkód beolvasása"
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
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:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr "Érvénytelen vonalkód adat"
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr "Rendelés késésben"
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
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:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr "Töröljük a kiválasztott sortételeket?"
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr "Sortétel másolása"
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr "Sortétel szerkesztése"
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr "Sortétel törlése"
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr "Sortétel másolása"
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr "Sortétel szerkesztése"
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr "Sortétel törlése"
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
-msgstr ""
+msgstr "Jelentés nyomtatása sikeres"
#: templates/js/translated/report.js:73
msgid "Report printing failed"
-msgstr ""
+msgstr "Jelentés nyomtatása sikertelen"
#: templates/js/translated/return_order.js:60
#: templates/js/translated/sales_order.js:86
@@ -13879,7 +14220,7 @@ msgid "No return orders found"
msgstr "Nem található visszavétel"
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr "Érvénytelen vevő"
@@ -13888,7 +14229,7 @@ msgid "Receive Return Order Items"
msgstr "Visszavétel tételeinek bevételezése"
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr "Nincs egyező sortétel"
@@ -13904,188 +14245,181 @@ msgstr "Vevői rendelés létrehozása"
msgid "Edit Sales Order"
msgstr "Vevői rendelés szerkesztése"
-#: templates/js/translated/sales_order.js:291
+#: 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:296
-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:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr "Függő szállítmányok kiszállítása"
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr "Szállítmány megerősítése"
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr "Nincs függő szállítmány"
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
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:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr "Függő szállítmányok kiszállítása"
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr "Kihagyás"
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
-msgstr ""
+msgstr "Vevői rendelés kiszállítása"
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
-msgstr ""
+msgstr "Biztosan kiszállította a rendelést?"
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
-msgstr ""
+msgstr "A rendelés nem kiszállítható mert vannak még hiányos szállítások"
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
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:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
-msgstr ""
+msgstr "A rendelés szállítása után a rendelés tételei nem lesznek szerkeszthetők."
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr "Vissza lett igazolva ez a vevői rendelés?"
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr "Vevői rendelés visszaigazolása"
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr "Vevő rendelés törlése"
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
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:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr "Szállítmány létrehozása"
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr "Nem található vevői rendelés"
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr "Szállítmány szerkesztése"
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr "Szállítmány kiszállítása"
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr "Szállítmány törlése"
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr "Szállítmány szerkesztése"
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr "Szállítmány törlése"
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr "Nincs egyező szállímány"
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr "Szállítmány azonosító"
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr "Nincs kiszállítva"
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr "Nyomkövetés"
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr "Számla"
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr "Szállítmány hozzáadása"
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr "Készlet foglalás megerősítése"
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr "Készlet foglalása a vevői rendeléshez"
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr "Nincs vevői rendeléshez történő foglalás"
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr "Készlet foglalások szerkesztése"
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr "Törlési művelet megerősítése"
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr "Készlet foglalások törlése"
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr "Vevőnek kiszállítva"
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr "Készlethely nincs megadva"
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr "Sorozatszámok kiosztása"
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr "Készletrendelés"
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr "Árszámítás"
-
-#: templates/js/translated/sales_order.js:2071
-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:2074
-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:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr "Sorozatszámok kiosztása"
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr "Készletrendelés"
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr "Árszámítás"
+
+#: templates/js/translated/sales_order.js:2052
+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:2055
+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:2234
msgid "Update Unit Price"
msgstr "Egységár módosítása"
@@ -14210,13 +14544,10 @@ msgid "Find Serial Number"
msgstr "Sorozatszám keresése"
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
+#: templates/js/translated/stock.js:620
msgid "Enter serial number"
msgstr "Sorozatszám megadása"
-#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
-msgstr "Adj meg egy sorozatszámot"
-
#: templates/js/translated/stock.js:640
msgid "No matching serial number"
msgstr "Nincs egyező sorozatszám"
@@ -14285,7 +14616,7 @@ msgstr "Kivesz"
msgid "Add Stock"
msgstr "Készlet növelése"
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr "Hozzáad"
@@ -14303,13 +14634,13 @@ msgstr "Készlet mennyiség megadása"
#: templates/js/translated/stock.js:1168
msgid "Adjust batch code"
-msgstr ""
+msgstr "Köteg kód módosítása"
#: templates/js/translated/stock.js:1178
msgid "Adjust packaging"
-msgstr ""
+msgstr "Csomagolás módosítása"
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr "Készlet tételek kiválasztása"
@@ -14321,18 +14652,6 @@ msgstr "Válassz legalább egy rendelkezésre álló készlet tételt"
msgid "Confirm stock adjustment"
msgstr "Készlet módosítás jóváhagyása"
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr "SIKER"
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr "SIKERTELEN"
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr "NINCS EREDMÉNY"
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr "Teszt sikeres"
@@ -14389,218 +14708,218 @@ msgstr "Vevő rendeléshez hozzárendelve"
msgid "No stock location set"
msgstr "Nincs hely megadva"
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr "Készlet állapot módosítása"
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr "Készlet összevonása"
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr "Készlet törlése"
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr "készlet tételek"
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr "Beolvasás helyre"
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr "Készlet műveletek"
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr "Beépített tételek betöltése"
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr "Készlet tétel gyártás alatt"
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez"
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr "Készlet tétel hozzárendelve egy vevőhöz"
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva"
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr "Készlet tétel teljes egészében lefoglalva"
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr "Készlet tétel részben lefoglalva"
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
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:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr "Készlet tétel fel lett használva egy gyártásban"
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr "Készlet tétel lejárt"
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr "Készlet tétel hamarosan lejár"
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr "Készlet tétel elutasítva"
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr "Készlet tétel elveszett"
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr "Készlet tétel megsemmisült"
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr "Kimerült"
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr "Beszállítói alkatrész nincs megadva"
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr "Készletérték"
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr "Nincs a lekérdezésnek megfelelő készlet tétel"
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr "készlethelyek"
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr "Alhelyek betöltése"
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr "Részletek"
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr "Nincs változás"
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr "Alkatrész információ nem áll rendelkezésre"
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr "A hely már nem létezik"
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr "A gyártási utasítás már nem létezik"
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr "Beszerzési megrendelés már nem létezik"
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr "Vevői megrendelés már nem létezik"
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr "Visszavétel már nem létezik"
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr "Vevő már nem létezik"
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr "A készlet tétel már nem létezik"
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr "Hozzáadva"
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr "Eltávolítva"
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr "Nincsenek beépített tételek"
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr "Készlet tétel kiszedése"
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr "Válaszd ki a kiszedni való készlet tételt"
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
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:3302
+#: templates/js/translated/stock.js:3303
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:3304
+#: templates/js/translated/stock.js:3305
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:3305
+#: templates/js/translated/stock.js:3306
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:3306
+#: templates/js/translated/stock.js:3307
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:3307
+#: templates/js/translated/stock.js:3308
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:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr "Válaszd ki a beépítendő alkatrészt"
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr "Válassz ki egy vagy több készlet tételt"
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr "Kiválasztott készlet tételek"
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr "Készlet állapot módosítása"
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
-msgstr ""
+msgstr "Aktuális hét"
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
-msgstr ""
+msgstr "Aktuális hónap"
#: templates/js/translated/table_filters.js:73
msgid "Has project code"
@@ -14615,7 +14934,7 @@ msgstr "Rendelés állapota"
#: templates/js/translated/table_filters.js:161
msgid "Testable Part"
-msgstr ""
+msgstr "Ellenőrizhető alkatrész"
#: templates/js/translated/table_filters.js:165
msgid "Trackable Part"
@@ -14735,10 +15054,6 @@ msgstr "Készleten lévő tételek megjelenítése"
msgid "Show items which are in production"
msgstr "Gyártásban lévő tételek megjelenítése"
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr "Változatokkal együtt"
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr "Alkatrészváltozatok készletével együtt"
@@ -14798,11 +15113,11 @@ msgstr "Beépített tételekkel együtt"
#: templates/js/translated/table_filters.js:478
msgid "Interval start"
-msgstr ""
+msgstr "Intervallum eleje"
#: templates/js/translated/table_filters.js:482
msgid "Interval end"
-msgstr ""
+msgstr "Invervallum vége"
#: templates/js/translated/table_filters.js:536
msgid "Build status"
@@ -14818,7 +15133,7 @@ msgstr "Aktív alkatrészek megjelenítése"
#: templates/js/translated/table_filters.js:725
msgid "Show locked parts"
-msgstr ""
+msgstr "Lezárt alkatrészek megjelenítése"
#: templates/js/translated/table_filters.js:733
msgid "Available stock"
@@ -15013,10 +15328,6 @@ msgstr "Felhasználó bejelentkezési hiba"
msgid "An error occurred while attempting to login via your social network account."
msgstr "Hiba lépett fel a közösségi hálós bejelentkezés során."
-#: templates/socialaccount/authentication_error.html:13
-msgid "Contact your system administrator for further information."
-msgstr "Vedd fel a kapcsolatot a rendszergazdával további információkért."
-
#: templates/socialaccount/login.html:13
#, python-format
msgid "Connect %(provider)s"
@@ -15128,11 +15439,11 @@ msgstr "Email beállítások hiányoznak"
#: templates/test_statistics_table.html:13
msgid "Passed"
-msgstr ""
+msgstr "Megfelelt"
#: templates/test_statistics_table.html:16
msgid "Failed"
-msgstr ""
+msgstr "Elbukott"
#: templates/yesnolabel.html:4
msgid "Yes"
@@ -15142,27 +15453,27 @@ msgstr "Igen"
msgid "No"
msgstr "Nem"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Felhasználók"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr "Válaszd ki mely felhasználók tartoznak ehhez a csoporthoz"
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr "Az alábbi felhasználók több csoportnak is tagjai"
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Személyes adatok"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Jogosultságok"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr "Fontos dátumok"
@@ -15206,35 +15517,35 @@ msgstr "Token utolsó használata"
msgid "Revoked"
msgstr "Visszavonva"
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "Jogosultságok"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Csoport"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Nézet"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Jogosultság tételek megtekintéséhez"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Jogosultság tételek hozzáadásához"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Módosítás"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Jogosultság tételek szerkesztéséhez"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Jogosultság tételek törléséhez"
diff --git a/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po
index d866386fc6..04a4f068ec 100644
--- a/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/id/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: id\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API endpoint tidak ditemukan"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Pengguna tidak memiliki izin untuk melihat model ini"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Nilai tidak tersedia"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr ""
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Jumlah yang diberikan tidak valid"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Detail terkait galat dapat dilihat di panel admin"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Masukkan tanggal"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Catatan"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Nilai yang diberikan tidak sesuai dengan pola yang ditentukan: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Alamat surel utama yang diberikan tidak valid."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Domain surel yang diberikan tidak perbolehkan."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Jumlah yang diberikan tidak valid"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Nomor seri kosong"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
-msgstr ""
+msgstr "Gandakan Nomor Seri"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Tidak ada nomor seri ditemukan"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Hapus tag-tag HTML dari nilai ini"
-#: InvenTree/helpers_model.py:133
-msgid "Connection error"
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
msgstr ""
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:130
+msgid "Connection error"
+msgstr "Koneksi Galat"
+
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Ukuran gambar terlalu besar"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "URL yang diberikan bukan file gambar yang valid"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
-msgstr ""
+msgstr "Bahasa Arab"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Ceko"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Denmark"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Jerman"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Yunani"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Inggris"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spanyol"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spanyol (Meksiko)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persia"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Perancis"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Ibrani"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Hungaria"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Itali"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Jepang"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Korea"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr "Bahasa Lithuania"
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Belanda"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norwegia"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polandia"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugis"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugis (Brasil)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr ""
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Rusia"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr ""
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr ""
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr ""
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Swedia"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr ""
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turki"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr ""
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnam"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr ""
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Surel"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Pilihan tidak valid"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Nama"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Keterangan"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Keterangan (opsional)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Direktori"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Data Barcode"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Data barcode pihak ketiga"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Hash unik data barcode"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Sudah ada barcode yang sama"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Terjadi Kesalahan Server"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Sebuah kesalahan telah dicatat oleh server."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Harus berupa angka yang valid"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,50 +552,50 @@ msgstr "Mata Uang"
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
-msgstr ""
+msgstr "Nama Pengguna"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
-msgstr ""
+msgstr "Nama Depan"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
-msgstr ""
+msgstr "Nama depan dari pengguna"
#: InvenTree/serializers.py:412 templates/InvenTree/settings/user.html:41
msgid "Last Name"
-msgstr ""
+msgstr "Nama Belakang"
#: InvenTree/serializers.py:412
msgid "Last name of the user"
-msgstr ""
+msgstr "Nama belakang dari pengguna"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
-msgstr ""
+msgstr "Alamat surel dari pengguna"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
-msgstr ""
+msgstr "Staf"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -583,249 +603,300 @@ msgstr ""
#: templates/js/translated/table_filters.js:719
#: templates/js/translated/table_filters.js:808 users/models.py:182
msgid "Active"
-msgstr ""
+msgstr "Aktif"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
-msgstr ""
+msgstr "Selamat Datang di InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Nilai tidak valid"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "File data"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Pilih file untuk diunggah"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Jenis file tidak didukung"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Ukuran file terlalu besar"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Tidak ditemukan kolom dalam file"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Tidak ditemukan barisan data dalam file"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Tidak ada barisan data tersedia"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Tidak ada kolom data tersedia"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Kolom yang diperlukan kurang: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Kolom duplikat: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL file gambar external"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Unduhan gambar dari URL external tidak aktif"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Pengecekan kesehatan sistem InvenTree gagal"
-
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Bukan kode mata uang yang valid"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Nilai kelebihan tidak boleh negatif"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Kelebihan tidak boleh melebihi 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Nilai kelebihan tidak valid"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Ubah Informasi User"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Atur Kata Sandi"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Bidang kata sandi tidak cocok"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Kata sandi yang salah"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Informasi Sistem"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Tentang InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Produksi Induk"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Pesanan harus dibatalkan sebelum dapat dihapus"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
#: templates/js/translated/table_filters.js:578
msgid "Available"
-msgstr ""
+msgstr "Tersedia"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Bagian"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Order Produksi"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Order Produksi"
msgid "Build Orders"
msgstr "Order Produksi"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Pilihan produksi induk tidak valid"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Referensi Order Produksi"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Referensi"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Produksi induk dari produksi ini"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Bagian"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Pilih bagian untuk diproduksi"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Referensi Order Penjualan"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Order penjualan yang teralokasikan ke pesanan ini"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Lokasi Sumber"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Lokasi Tujuan"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Pilih lokasi di mana item selesai akan disimpan"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Jumlah Produksi"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Jumlah item stok yang akan dibuat"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Item selesai"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Jumlah stok item yang telah diselesaikan"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Status pembuatan"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Kode status pembuatan"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Kode Kelompok"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Kode kelompok untuk hasil produksi ini"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Tanggal Pembuatan"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Target tanggal selesai"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Tanggal selesai"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "diselesaikan oleh"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Diserahkan oleh"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Pengguna yang menyerahkan order ini"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Penanggung Jawab"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Tautan eksternal"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Tautan menuju URL eksternal"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,633 +1129,642 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Tidak ada hasil produksi yang ditentukan"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Hasil produksi sudah selesai"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "Hasil produksi tidak sesuai dengan order produksi"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Jumlah harus lebih besar daripada nol"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Jumlah"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Item stok teralokasikan terlalu banyak"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Jumlah yang dialokasikan harus lebih dari nol"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "Jumlah harus 1 untuk stok dengan nomor seri"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Stok Item"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Sumber stok item"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Jumlah stok yang dialokasikan ke produksi"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Pasang ke"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Tujuan stok item"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Hasil Produksi"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "Hasil produksi tidak sesuai dengan produksi induk"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "Hasil bagian tidak sesuai dengan bagian dalam order produksi"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Hasil produksi ini sudah diselesaikan"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Hasil produksi tidak dialokasikan sepenuhnya"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Masukkan jumlah hasil pesanan"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat"
-#: build/serializers.py:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Nomor Seri"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Masukkan nomor seri untuk hasil pesanan"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Lokasi"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Alokasikan nomor seri secara otomatis"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Alokasikan item yang diperlukan dengan nomor seri yang sesuai secara otomatis"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid"
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Daftar hasil pesanan harus disediakan"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Lokasi hasil pesanan yang selesai"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
-msgstr ""
+msgstr "Status"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Terima Alokasi Tidak Lengkap"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
-msgstr ""
+msgstr "Tidak diizinkan"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Terima Tidak Teralokasikan"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Terima Tidak Selesai"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Jumlah produksi yang diperlukan masih belum cukup"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "Order memiliki hasil produksi yang belum dilengkapi"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Hasil produksi"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "Hasil pesanan harus mengarah ke pesanan yang sama"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "Item harus tersedia dalam stok"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Jumlah tersedia ({q}) terlampaui"
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlacak"
-#: build/serializers.py:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Item yang dialokasikan harus disediakan"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Lokasi stok, dari mana bahan/bagian akan diambilkan (kosongkan untuk mengambil dari lokasi mana pun)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Lokasi tidak termasuk"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Jangan ambil stok item dari lokasi yang dipilih"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Stok bergantian"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Item stok di beberapa lokasi dapat digunakan secara bergantian"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Stok pengganti"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Izinkan alokasi bagian pengganti"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
-msgstr ""
+msgstr "Nama Lokasi"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
-msgstr ""
+msgstr "Nomor Seri"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Item tagihan material"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
-msgstr ""
+msgstr "Tertunda"
#: build/status_codes.py:12
msgid "Production"
msgstr "Produksi"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Dibatalkan"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Selesai"
@@ -1744,165 +1772,162 @@ msgstr "Selesai"
msgid "Stock required for build order"
msgstr "Stok dibutuhkan untuk order produksi"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Tampilkan kode QR"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Cetak aksi"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Cetak laporan order produksi"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Aksi produksi"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Ubah Produksi"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Batalkan Produksi"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Hapus Produksi"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Selesaikan Produksi"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Deskripsi Produksi"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Tidak ada hasil pesanan yang dibuat oleh pesanan ini"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
-msgstr ""
+msgstr "Prioritas"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,35 +2008,36 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
-msgstr ""
+msgstr "Terbuat"
#: 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
-msgstr ""
+msgstr "Selesai"
#: build/templates/build/detail.html:153
msgid "Build not complete"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
-msgstr ""
+msgstr "Berkas"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
-msgstr ""
+msgstr "Nama Perusahaan"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
-msgstr ""
+msgstr "Hari"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
-msgstr ""
+msgstr "Komponen"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
-msgstr ""
+msgstr "Aktifkan Laporan"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
-msgstr ""
+msgstr "Ukuran Halaman"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Surel diperlukan"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr "Aktifkan Integrasi Antarmuka"
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
-msgstr ""
+#: common/models.py:2419
+msgid "Search Parts"
+msgstr "Cari barang"
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
msgstr ""
+#: common/models.py:2449
+msgid "Search Stock"
+msgstr "Cari Persediaan"
+
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
msgstr ""
+#: common/models.py:2463
+msgid "Search Locations"
+msgstr "Cari Lokasi"
+
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
-msgstr ""
+#: common/models.py:2469
+msgid "Search Companies"
+msgstr "Cari Perusahaan"
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Pengguna"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
-msgstr ""
+msgstr "Harga"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
-msgstr ""
+msgstr "Judul"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Tautan"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
-msgstr ""
+msgstr "Kesimpulan"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
-msgstr ""
+msgstr "Berkas Gambar"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Lampiran"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "File tidak ditemukan"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Tautan eksternal tidak ditemukan"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Pilih file untuk dilampirkan"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Komentar"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
-msgstr ""
+msgstr "Ukuran Berkas"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr "Label"
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr "Model"
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr "Respon"
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
-msgstr ""
+msgstr "Barang diterima"
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Nama File"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
-msgstr ""
+msgstr "Perusahaan"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
-msgstr ""
+msgstr "Perusahaan"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
-msgstr ""
+msgstr "Deskripsi Perusahaan"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
-msgstr ""
+msgstr "Laman"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
-msgstr ""
+msgstr "Nomor Ponsel"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
-msgstr ""
+msgstr "Kontak alamat surel"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
-msgstr ""
+msgstr "Kontak"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
-msgstr ""
+msgstr "Kode Pos"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
-msgstr ""
+msgstr "Tidak aktif"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4618,7 +4798,7 @@ msgstr ""
#: company/templates/company/company_base.html:61
#: part/templates/part/part_thumb.html:12
msgid "Upload new image"
-msgstr ""
+msgstr "Unggah Gambar Baru"
#: company/templates/company/company_base.html:64
#: part/templates/part/part_thumb.html:14
@@ -4628,21 +4808,21 @@ msgstr ""
#: company/templates/company/company_base.html:66
#: part/templates/part/part_thumb.html:16
msgid "Delete image"
-msgstr ""
+msgstr "Hapus Gambar"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
-msgstr ""
+msgstr "Pelanggan"
#: company/templates/company/company_base.html:117
msgid "Uses default currency"
@@ -4650,33 +4830,33 @@ msgstr ""
#: company/templates/company/company_base.html:131
msgid "Phone"
-msgstr ""
+msgstr "Ponsel"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
-msgstr ""
+msgstr "Hapus Gambar"
#: company/templates/company/company_base.html:212
msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
-msgstr ""
+msgstr "Unggah Gambar"
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
-msgstr ""
+msgstr "Unduh Gambar"
#: company/templates/company/detail.html:15
#: company/templates/company/manufacturer_part_sidebar.html:7
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5016,105 +5197,105 @@ msgstr ""
#: company/views.py:44
msgid "New Customer"
-msgstr ""
+msgstr "Pelanggan Baru"
#: company/views.py:52
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Diletakkan"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
-msgid "Copies"
-msgstr ""
-
#: machine/machine_types/label_printer.py:216
+msgid "Copies"
+msgstr "Tersalin"
+
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
-msgstr ""
+msgstr "Tidak diketahui"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
-msgstr ""
+msgstr "Jaringan Terputus"
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
-msgstr ""
+msgstr "Total Harga"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
-msgstr ""
+msgstr "Harga Jual"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Dikirim"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr "Order ID"
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr "Salin Baris"
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Hilang"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Dikembalikan"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
-msgstr ""
+msgstr "Ganti"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
-msgstr ""
+msgstr "Tolak"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,17 +6718,17 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
-msgstr ""
+msgstr "Harga Minimal"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
-msgstr ""
+msgstr "Harga Maksimal"
#: part/api.py:104
msgid "Starred"
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
-msgstr ""
+msgstr "Tanggal"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
-msgstr ""
+msgstr "Lapor"
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
-msgstr ""
+msgstr "Aktif"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
-msgstr ""
+msgstr "Pilihan"
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,342 +7662,354 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
-msgstr ""
+msgstr "Perbarui"
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
-msgstr ""
+msgstr "Jumlah Total"
#: part/stocktake.py:225
msgid "Total Cost Min"
@@ -7925,16 +8150,16 @@ msgstr ""
#: part/templates/part/detail.html:45 part/templates/part/prices.html:15
#: templates/js/translated/tables.js:552
msgid "Refresh"
-msgstr ""
+msgstr "Muat Ulang"
#: part/templates/part/detail.html:66
msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
-msgstr ""
+msgstr "Rentang Harga"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
-msgstr ""
+msgstr "Hitung"
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8242,7 +8471,7 @@ msgstr ""
#: part/templates/part/part_pricing.html:95
#: part/templates/part/part_pricing.html:110
msgid "Unit Cost"
-msgstr ""
+msgstr "Harga Unit"
#: part/templates/part/part_pricing.html:40
msgid "No supplier pricing available"
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8372,7 +8601,7 @@ msgstr ""
#: part/templates/part/prices.html:149 part/templates/part/prices.html:326
msgid "Sale History"
-msgstr ""
+msgstr "Riwayat Penjualan"
#: part/templates/part/prices.html:157
msgid "Sale price data is not available for this part"
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,80 +8727,87 @@ msgstr "Tidak ada tindakan yang ditentukan"
msgid "No matching action found"
msgstr "Aksi tidak ditemukan"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
-msgstr ""
+msgstr "Tidak cukup informasi"
#: plugin/base/barcodes/mixins.py:172 plugin/base/barcodes/mixins.py:204
msgid "Found multiple matching supplier parts for barcode"
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8696,7 +8968,7 @@ msgstr ""
#: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21
#: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21
msgid "InvenTree contributors"
-msgstr ""
+msgstr "Kontributor InvenTree"
#: plugin/builtin/barcodes/inventree_barcode.py:34
msgid "Internal Barcode Format"
@@ -8756,9 +9028,9 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
-msgstr ""
+msgstr "Buka Laman"
#: plugin/builtin/integration/currency_exchange.py:22
msgid "InvenTree Currency Exchange"
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8970,7 +9238,7 @@ msgstr ""
#: plugin/models.py:157 templates/js/translated/table_filters.js:377
#: templates/js/translated/table_filters.js:525
msgid "Installed"
-msgstr ""
+msgstr "Terpasang"
#: plugin/models.py:166
msgid "Sample plugin"
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9051,83 +9319,159 @@ msgstr ""
#: plugin/samples/integration/sample_currency_exchange.py:18
msgid "InvenTree Contributors"
+msgstr "Kontributor InvenTree"
+
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
-msgid "Source for the package - this can be a custom registry or a VCS path"
+msgid "Path to the source file for admin integration"
msgstr ""
-#: plugin/serializers.py:92
-msgid "Name for the Plugin Package - can also contain a version indicator"
-msgstr ""
-
-#: plugin/serializers.py:99
-#: templates/InvenTree/settings/plugin_settings.html:42
-#: templates/js/translated/plugin.js:86
-msgid "Version"
-msgstr ""
-
-#: plugin/serializers.py:101
-msgid "Version specifier for the plugin. Leave blank for latest version."
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
msgstr ""
#: plugin/serializers.py:106
-msgid "Confirm plugin installation"
+msgid "Source URL"
msgstr ""
#: plugin/serializers.py:108
+msgid "Source for the package - this can be a custom registry or a VCS path"
+msgstr ""
+
+#: plugin/serializers.py:117
+msgid "Name for the Plugin Package - can also contain a version indicator"
+msgstr ""
+
+#: plugin/serializers.py:124
+#: templates/InvenTree/settings/plugin_settings.html:42
+#: templates/js/translated/plugin.js:86
+msgid "Version"
+msgstr "Versi"
+
+#: plugin/serializers.py:126
+msgid "Version specifier for the plugin. Leave blank for latest version."
+msgstr ""
+
+#: plugin/serializers.py:131
+msgid "Confirm plugin installation"
+msgstr ""
+
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,26 +9511,30 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
#: report/helpers.py:43
msgid "A4"
-msgstr ""
+msgstr "A4"
#: report/helpers.py:44
msgid "A3"
-msgstr ""
+msgstr "A3"
#: report/helpers.py:45
msgid "Legal"
-msgstr ""
+msgstr "Legal"
#: report/helpers.py:46
msgid "Letter"
-msgstr ""
+msgstr "Letter"
#: report/models.py:118
msgid "Template file with this name already exists"
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr "Lampiran perlu diunggah untuk tes ini"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Ditolak"
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Item stok dibuat"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Item stok diubah"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Nomor seri yang ditetapkan"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Stok terhitung"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Stok yang ditambahkan manual"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Stok yang dikurangi manual"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Lokasi berubah"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Dirakit ke"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Diambil dari"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Komponen terpasang"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Komponen terlepas"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Dipisah dari item induk"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Pisah item dari barang induk"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Stok item digabungkan"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Dikonversi ke variasi"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Output order produksi dibuat"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Order output produksi selesai"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Terpakai oleh order produksi"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Terkirim ke pelanggan"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Dikembalikan pelanggan"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Produksi"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11044,7 +11408,7 @@ msgstr ""
#: templates/InvenTree/settings/pricing.html:39
msgid "Update Now"
-msgstr ""
+msgstr "Perbarui Sekarang"
#: templates/InvenTree/settings/pricing.html:47
#: templates/InvenTree/settings/pricing.html:51
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr "Tidak terverifikasi"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11400,7 +11764,7 @@ msgstr ""
#: templates/InvenTree/settings/user_display.html:50
msgid "Set Theme"
-msgstr ""
+msgstr "Atur Tema"
#: templates/InvenTree/settings/user_display.html:58
msgid "Language Settings"
@@ -11408,7 +11772,7 @@ msgstr "Pengaturan Bahasa"
#: templates/InvenTree/settings/user_display.html:67
msgid "Select language"
-msgstr ""
+msgstr "Pilih Bahasa"
#: templates/InvenTree/settings/user_display.html:83
#, python-format
@@ -11421,7 +11785,7 @@ msgstr ""
#: templates/InvenTree/settings/user_display.html:92
msgid "Set Language"
-msgstr ""
+msgstr "Atur Bahasa"
#: templates/InvenTree/settings/user_display.html:95
msgid "Some languages are not complete"
@@ -11509,7 +11873,7 @@ msgstr ""
#: templates/about.html:59
msgid "Python Version"
-msgstr ""
+msgstr "Versi Python"
#: templates/about.html:64
msgid "Django Version"
@@ -11525,14 +11889,14 @@ msgstr ""
#: templates/about.html:79
msgid "Mobile App"
-msgstr ""
+msgstr "Aplikasi Seluler"
#: templates/about.html:84
msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11580,7 +11944,7 @@ msgstr ""
#: templates/account/login.html:47
msgid "Forgot Password?"
-msgstr ""
+msgstr "Lupa Kata Sandi?"
#: templates/account/login.html:55
msgid "or log in with"
@@ -11628,7 +11992,7 @@ msgstr ""
#: templates/account/password_reset_from_key.html:18
msgid "Change password"
-msgstr ""
+msgstr "Ganti Password"
#: templates/account/password_reset_from_key.html:22
msgid "Your password is now changed."
@@ -11696,7 +12060,7 @@ msgstr ""
#: templates/allauth_2fa/remove.html:17
msgid "Disable 2FA"
-msgstr ""
+msgstr "Nonaktifkan 2FA"
#: templates/allauth_2fa/setup.html:6
msgid "Setup Two-Factor Authentication"
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,13 +12166,13 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1135
msgid "No Response"
-msgstr ""
+msgstr "Tidak ada Respon"
#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1136
msgid "No response from the InvenTree server"
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
-msgstr ""
+msgstr "Pilih"
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
-msgstr ""
+msgstr "Tidak ada Informasi Pengguna"
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
-msgstr ""
+msgstr "Buat Kontak Baru"
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
-msgstr ""
+msgstr "Nomor Telepon"
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
-msgstr ""
+msgstr "Alamat Surel"
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
-msgstr ""
+msgstr "Kode Pos"
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
-msgstr ""
+msgstr "Negara Bagian/Provinsi"
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
-msgstr ""
+msgstr "Ya"
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
-msgstr ""
+msgstr "Tidak"
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13012,7 +13377,7 @@ msgstr ""
#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:159
#: templates/js/translated/modals.js:688
msgid "Cancel"
-msgstr ""
+msgstr "Batalkan"
#: templates/js/translated/modals.js:64 templates/js/translated/modals.js:158
#: templates/js/translated/modals.js:756 templates/js/translated/modals.js:1064
@@ -13034,7 +13399,7 @@ msgstr ""
#: templates/js/translated/modals.js:687
msgid "Accept"
-msgstr ""
+msgstr "Terima"
#: templates/js/translated/modals.js:745
msgid "Loading Data"
@@ -13084,7 +13449,7 @@ msgstr ""
#: templates/js/translated/notification.js:65
msgid "Notification"
-msgstr ""
+msgstr "Notifikasi"
#: templates/js/translated/notification.js:224
msgid "Mark as unread"
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13299,7 +13664,7 @@ msgstr ""
#: templates/js/translated/part.js:751
msgid "Demand"
-msgstr ""
+msgstr "Permintaan"
#: templates/js/translated/part.js:774
msgid "Unit"
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13541,11 +13906,11 @@ msgstr ""
#: templates/js/translated/plugin.js:189
msgid "Enable"
-msgstr ""
+msgstr "Aktifkan"
#: templates/js/translated/plugin.js:189
msgid "Disable"
-msgstr ""
+msgstr "Nonaktifkan"
#: templates/js/translated/plugin.js:203
msgid "Plugin updated"
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
-msgstr ""
+msgstr "Riwayat Harga Jual"
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
-msgstr ""
+msgstr "Gabungkan"
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
-msgstr ""
+msgstr "Tambah Barcode"
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
-msgstr ""
+msgstr "Tambah Catatan"
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13847,7 +14188,7 @@ msgstr ""
#: templates/js/translated/return_order.js:60
#: templates/js/translated/sales_order.js:86
msgid "Add Customer"
-msgstr ""
+msgstr "Tambah Pelanggan"
#: templates/js/translated/return_order.js:134
msgid "Create Return Order"
@@ -13878,16 +14219,16 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
-msgstr ""
+msgstr "Pelanggan Tidak Valid"
#: templates/js/translated/return_order.js:560
msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
-msgstr ""
+msgstr "Lewati"
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
-msgstr ""
+msgstr "Tidak Terkirim"
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
-msgstr ""
+msgstr "Tambah Pengiriman"
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14206,15 +14540,12 @@ msgstr ""
#: templates/js/translated/stock.js:599
msgid "Find Serial Number"
-msgstr ""
+msgstr "Cari Nomor Seri"
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
-msgstr ""
+msgid "Enter serial number"
+msgstr "Masukkan Nomor Seri"
#: templates/js/translated/stock.js:640
msgid "No matching serial number"
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,218 +14707,218 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
-msgstr ""
+msgstr "Rincian"
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
-msgstr ""
+msgstr "Tidak ada perubahan"
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
-msgstr ""
+msgstr "Ditambahkan"
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
-msgstr ""
+msgstr "Terhapus"
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
-msgstr ""
+msgstr "Minggu ini"
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
-msgstr ""
+msgstr "Bulan ini"
#: templates/js/translated/table_filters.js:73
msgid "Has project code"
@@ -14664,7 +14983,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:308
#: templates/js/translated/table_filters.js:394
msgid "Serial number GTE"
-msgstr ""
+msgstr "Nomor Seri GTE"
#: templates/js/translated/table_filters.js:309
#: templates/js/translated/table_filters.js:395
@@ -14674,7 +14993,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:312
#: templates/js/translated/table_filters.js:398
msgid "Serial number LTE"
-msgstr ""
+msgstr "Nomor Seri LTE"
#: templates/js/translated/table_filters.js:313
#: templates/js/translated/table_filters.js:399
@@ -14686,7 +15005,7 @@ msgstr ""
#: templates/js/translated/table_filters.js:390
#: templates/js/translated/table_filters.js:391
msgid "Serial number"
-msgstr ""
+msgstr "Kode Seri"
#: templates/js/translated/table_filters.js:321
#: templates/js/translated/table_filters.js:412
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -14930,27 +15245,27 @@ msgstr ""
#: templates/navbar.html:45
msgid "Buy"
-msgstr ""
+msgstr "Beli"
#: templates/navbar.html:57
msgid "Sell"
-msgstr ""
+msgstr "Jual"
#: templates/navbar.html:121
msgid "Show Notifications"
-msgstr ""
+msgstr "Tampilkan Notifikasi"
#: templates/navbar.html:124
msgid "New Notifications"
-msgstr ""
+msgstr "Notifikasi baru"
#: templates/navbar.html:144 users/models.py:201
msgid "Admin"
-msgstr ""
+msgstr "Admin"
#: templates/navbar.html:148
msgid "Logout"
-msgstr ""
+msgstr "Keluar"
#: templates/notes_buttons.html:6 templates/notes_buttons.html:7
msgid "Save"
@@ -14974,7 +15289,7 @@ msgstr ""
#: templates/pui_banner.html:15
msgid "here"
-msgstr ""
+msgstr "disini"
#: templates/qr_code.html:11
msgid "QR data not provided"
@@ -14994,7 +15309,7 @@ msgstr ""
#: templates/search.html:12
msgid "Clear search"
-msgstr ""
+msgstr "Hapus Pencarian"
#: templates/search.html:15
msgid "Close search menu"
@@ -15012,14 +15327,10 @@ msgstr ""
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 ""
+msgstr "Tersambung %(provider)s"
#: templates/socialaccount/login.html:15
#, python-format
@@ -15038,7 +15349,7 @@ msgstr ""
#: templates/socialaccount/login.html:24
msgid "Continue"
-msgstr ""
+msgstr "Selanjutnya"
#: templates/socialaccount/login.html:29
msgid "Invalid SSO Provider"
@@ -15071,7 +15382,7 @@ msgstr ""
#: templates/stats.html:18
msgid "Database"
-msgstr ""
+msgstr "Basis data"
#: templates/stats.html:26
msgid "Server is running in debug mode"
@@ -15131,37 +15442,37 @@ msgstr ""
#: templates/test_statistics_table.html:16
msgid "Failed"
-msgstr ""
+msgstr "Gagal"
#: templates/yesnolabel.html:4
msgid "Yes"
-msgstr ""
+msgstr "Ya"
#: templates/yesnolabel.html:6
msgid "No"
-msgstr ""
+msgstr "Tidak"
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
-msgstr ""
+msgstr "Pengguna"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Data pribadi"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15171,7 +15482,7 @@ msgstr ""
#: users/authentication.py:32
msgid "Token has expired"
-msgstr ""
+msgstr "Token telah kadaluarsa"
#: users/models.py:81
msgid "API Token"
@@ -15183,7 +15494,7 @@ msgstr ""
#: users/models.py:118
msgid "Token Name"
-msgstr ""
+msgstr "Nama Token"
#: users/models.py:119
msgid "Custom token name"
@@ -15195,7 +15506,7 @@ msgstr ""
#: users/models.py:133
msgid "Last Seen"
-msgstr ""
+msgstr "Terakhir diliat"
#: users/models.py:134
msgid "Last time the token was used"
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
-msgid "Change"
-msgstr ""
-
#: users/models.py:402
+msgid "Change"
+msgstr "Ganti"
+
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po
index f5e08497ee..c2c94aa263 100644
--- a/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/it/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:50\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: it\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "Endpoint API non trovato"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "L'utente non ha i permessi per vedere questo modello"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Unità fornita non valida ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Nessun valore specificato"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Impossibile convertire {original} in {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "Quantità fornita non valida"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Quantità inserita non valida"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Quantità fornita non valida ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
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:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Inserisci la data"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Note"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Il valore '{name}' non è nel formato del pattern"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Il valore fornito non corrisponde al modello richiesto: "
@@ -126,403 +134,415 @@ msgstr "È necessario digitare la stessa e-mail ogni volta."
#: InvenTree/forms.py:221
msgid "MFA Registration is disabled."
-msgstr ""
+msgstr "La registrazione MFA è disabilitata."
#: InvenTree/forms.py:259 InvenTree/forms.py:267
msgid "The provided primary email address is not valid."
msgstr "L'indirizzo email principale fornito non è valido."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "L'indirizzo di posta elettronica fornito non è approvato."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "La registrazione è disabilitata."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Quantità inserita non valida"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Numero seriale vuoto"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Seriale Duplicato"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Intervallo di gruppo non valido: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "L'intervallo di gruppo {group} supera la quantità consentita ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Sequenza di gruppo non valida: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Nessun numero di serie trovato"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Il numero di numeri di serie univoci ({len(serials)}) deve corrispondere alla quantità ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Rimuovi i tag HTML da questo valore"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Errore di connessione"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Il server ha risposto con un codice di stato non valido"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Si è verificata un'eccezione"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Il server ha risposto con valore Content-Length non valido"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Immagine troppo grande"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Il download dell'immagine ha superato la dimensione massima"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Il server remoto ha restituito una risposta vuota"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "L'URL fornito non è un file immagine valido"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Arabo"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgaro"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Ceco"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Danese"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Tedesco"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Greco"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Inglese"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spagnolo"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spagnolo (Messicano)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Estone"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persiano"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finlandese"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Francese"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Ebraico"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hindi"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Ungherese"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italiano"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Giapponese"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Coreano"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Lettone"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Olandese"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norvegese"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polacco"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portoghese"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portoghese (Brasile)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Rumeno"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Russo"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Slovacco"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Sloveno"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbo"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Svedese"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thailandese"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turco"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ucraino"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamita"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Cinese (Semplificato)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Cinese (Tradizionale)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] Accedi all'app"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "Email"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Errore nell'eseguire la convalida del plugin"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "I metadati devono essere un oggetto python dict"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Metadati Plugin"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "Campo di metadati JSON, da utilizzare con plugin esterni"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Schema formattato impropriamente"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Formato chiave sconosciuta"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Formato chiave mancante"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Il campo di riferimento non può essere vuoto"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Il campo deve corrispondere al modello richiesto"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Numero di riferimento troppo grande"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Scelta non valida"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Nome"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Descrizione"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Descrizione (opzionale)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Percorso"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Note di Markdown (opzionale)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Dati del Codice a Barre"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Dati Codice a Barre applicazioni di terze parti"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Codice a Barre"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Codice univoco del codice a barre"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Trovato codice a barre esistente"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Errore del server"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Un errore è stato loggato dal server."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Deve essere un numero valido"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Valuta"
msgid "Select currency from available options"
msgstr "Selezionare la valuta dalle opzioni disponibili"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Nome utente"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Nome"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "Nome dell'utente"
@@ -552,30 +572,30 @@ msgstr "Cognome"
msgid "Last name of the user"
msgstr "Cognome dell'utente"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "Indirizzo email dell'utente"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Staff"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr "Questo utente ha i permessi dello staff"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Superuser"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr "Questo utente è un superutente"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr "Questo utente è un superutente"
msgid "Active"
msgstr "Attivo"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Questo account utente è attivo"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Non hai i permessi per cambiare il ruolo dell'utente."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Solo i superutenti possono creare nuovi utenti"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Il tuo account è stato creato."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Si prega di utilizzare la funzione di reset password per accedere"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Benvenuto in InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Valore non valido"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "File dati"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Seleziona un file per il caricamento"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Formato file non supportato"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "File troppo grande"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Nessun colonna trovata nel file"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Nessuna riga di dati trovata nel file"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Nessun dato fornito"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Nessuna colonna di dati fornita"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Colonna richiesta mancante: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Colonna duplicata: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Immagine Remota"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL del file immagine remota"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Il download delle immagini da URL remoto non è abilitato"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Controllo in background non riuscito"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "Server di posta non configurato"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "Controlli di sistema InvenTree falliti"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Database sconosciuto"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Unità fisica non valida"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Non è un codice valuta valido"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Il sovra-valore non può essere negativo"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "L'eccesso non deve superare il 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Valore non valido per eccedenza"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Modifica informazioni utente"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Imposta Password"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Le password devono coincidere"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Password inserita non corretta"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Informazioni sistema"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Informazioni Su InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Produzione Genitore"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Inviato da"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "La produzione deve essere annullata prima di poter essere eliminata"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Consumabile"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Opzionale"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Assemblaggio"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Monitorato"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Allocato"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Allocato"
msgid "Available"
msgstr "Disponibile"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Articolo"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Ordine di Produzione"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Ordine di Produzione"
msgid "Build Orders"
msgstr "Ordini di Produzione"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr "Assembly BOM non è stato convalidato"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr "L'ordine di generazione non può essere creato per una parte inattiva"
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr "L'ordine di compilazione non può essere creato per una parte sbloccata"
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Scelta non valida per la produzione genitore"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr "L'utente o il gruppo responsabile deve essere specificato"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "L'ordine di costruzione della parte non può essere cambiata"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Riferimento Ordine Di Produzione"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Riferimento"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Breve descrizione della build (facoltativo)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Ordine di produzione a cui questa produzione viene assegnata"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Articolo"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Selezionare parte da produrre"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Numero di riferimento ordine di vendita"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Ordine di vendita a cui questa produzione viene assegnata"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Posizione Di Origine"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Posizione Della Destinazione"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Seleziona il luogo in cui gli articoli completati saranno immagazzinati"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Quantità Produzione"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Numero di articoli da costruire"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Articoli completati"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Numero di articoli di magazzino che sono stati completati"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Stato Produzione"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Codice stato di produzione"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Codice Lotto"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Codice del lotto per questa produzione"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Data di creazione"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Data completamento obiettivo"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Data di completamento"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "Completato da"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Rilasciato da"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Utente che ha emesso questo ordine di costruzione"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Responsabile"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Utente o gruppo responsabile di questo ordine di produzione"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Collegamento esterno"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Link a URL esterno"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Priorità di produzione"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Priorità di questo ordine di produzione"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Codice del progetto"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Codice del progetto per questo ordine di produzione"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr "L'ordine di produzione {build} è stato completato"
msgid "A build order has been completed"
msgstr "L'ordine di produzione è stato completato"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Nessun output di produzione specificato"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "La produzione è stata completata"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "L'output della produzione non corrisponde all'ordine di compilazione"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "La quantità deve essere maggiore di zero"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "La quantità non può essere maggiore della quantità in uscita"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Crea oggetto"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Quantità"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Quantità richiesta per l'ordine di costruzione"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "L'articolo in giacenza è sovrallocato"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "La quantità di assegnazione deve essere maggiore di zero"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "La quantità deve essere 1 per lo stock serializzato"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Articoli in magazzino"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Origine giacenza articolo"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Quantità di magazzino da assegnare per la produzione"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Installa in"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Destinazione articolo in giacenza"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Nome Articolo"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Genera Output"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "L'output generato non corrisponde alla produzione principale"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "L'output non corrisponde alle parti dell'ordine di produzione"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Questa produzione è stata già completata"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Questo output non è stato completamente assegnato"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Inserisci la quantità per l'output di compilazione"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Quantità totale richiesta per articoli rintracciabili"
-#: build/serializers.py:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Codice Seriale"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Inserisci i numeri di serie per gli output di compilazione (build option)"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Posizione"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Numeri di Serie Assegnazione automatica"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Assegna automaticamente gli articoli richiesti con i numeri di serie corrispondenti"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
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:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Deve essere fornito un elenco dei risultati di produzione"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Posizione per gli output di build completati"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Stato"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Accetta Assegnazione Incompleta"
-#: build/serializers.py:542
+#: build/serializers.py:586
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:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Rimuovi Output Incompleti"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "Elimina gli output di produzione che non sono stati completati"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Non permesso"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Accetta come consumato da questo ordine di produzione"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Non assegnare prima di aver completato questo ordine di produzione"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Giacenza in eccesso assegnata"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Alcuni articoli di magazzino sono stati assegnati in eccedenza"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Accetta Non Assegnato"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "La giacenza richiesta non è stata completamente assegnata"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Accetta Incompleta"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "La quantità di produzione richiesta non è stata completata"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "L'ordine di produzione ha output incompleti"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Linea di produzione"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Genera Output"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "L'output di produzione deve puntare alla stessa produzione"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Articolo linea di produzione"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "L'articolo deve essere disponibile"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Quantità disponibile ({q}) superata"
-#: build/serializers.py:955
+#: build/serializers.py:999
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:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Deve essere indicata l'allocazione dell'articolo"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Posizione dello stock in cui le parti devono prelevate (lasciare vuoto per prelevare da qualsiasi luogo)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Escludi Ubicazione"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Escludi gli elementi stock da questa ubicazione selezionata"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Scorte Intercambiabili"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Gli elementi in magazzino in più sedi possono essere utilizzati in modo intercambiabile"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Sostituisci Giacenze"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Consenti l'allocazione delle parti sostitutive"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Articoli Opzionali"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Codice articolo produttore"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr "Nome Ubicazione"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Confezionamento"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "Codice Articolo"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr "IPN Articolo"
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Descrizione Articolo"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Numero Seriale"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr "Quantità Disponibile"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Tracciabile"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr "Consenti Le Varianti"
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Distinta base (Bom)"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "Ordinato"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr "Disponibilità in magazzino"
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Disponibilità in magazzino"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "In attesa"
@@ -1722,21 +1750,21 @@ msgstr "In attesa"
msgid "Production"
msgstr "Produzione"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Annullato"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Completo"
@@ -1744,165 +1772,162 @@ msgstr "Completo"
msgid "Stock required for build order"
msgstr "Giacenza richiesta per l'ordine di produzione"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Ordine di produzione in ritardo"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr "L'ordine di produzione {bo} è in ritardo"
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Anteprima parte"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Azioni Barcode"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Mostra QR Code"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Scollega Codice a Barre"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Collega Codice a Barre"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Azioni di stampa"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Stampa report ordine di produzione"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Azioni Produzione"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Modica Produzione"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Duplica Produzione"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Annulla Produzione"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Elimina Produzione"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Completa Produzione"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Descrizione Produzione"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Nessun output di produzione è stato creato per questo ordine di produzione"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "L'ordine di produzione è pronto per essere contrassegnato come completato"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "L'ordine di produzione non può essere completato poiché gli output rimangono in sospeso"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "La quantità di produzione richiesta non è stata completata"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Data scadenza"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Questa produzione era in scadenza il %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Questa produzione era in scadenza il %(target)s"
msgid "Overdue"
msgstr "In ritardo"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Outputs Completati"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Ordini di Vendita"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Priorità"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Elimina ordine di produzione"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Genera Codice QR Ordine di produzione"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Collega il codice a barre all'ordine di produzione"
@@ -1968,8 +1994,9 @@ 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:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Destinazione"
@@ -1981,23 +2008,24 @@ msgstr "Posizione di destinazione non specificata"
msgid "Allocated Parts"
msgstr "Articoli Assegnati"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Lotto"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Creato"
@@ -2005,8 +2033,8 @@ 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Completato"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr "Ordina articoli richiesti"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Ordine Articoli"
@@ -2120,7 +2148,7 @@ msgstr "Nuovo Ordine di Produzione"
msgid "Build Order Details"
msgstr "Dettagli Ordine di Produzione"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr "Output Incompleti"
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Formato di file non supportato: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Errore nella lettura del file (codifica non valida)"
@@ -2192,1883 +2215,2039 @@ msgstr "Errore nella lettura del file (dimensione errata)"
msgid "Error reading file (data could be corrupted)"
msgstr "Errore di lettura del file (i dati potrebbero essere danneggiati)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Seleziona file da caricare"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "Seleziona il file {name} da caricare"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Aggiornato"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Orario dell'ultimo aggiornamento"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Codice unico del progetto"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Descrizione del progetto"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
-msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Valore impostazioni"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "Il valore specificato non è un opzione valida"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "Il valore deve essere un valore booleano"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "Il valore deve essere un intero"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "La stringa chiave deve essere univoca"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Nessun gruppo"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Riavvio richiesto"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Nome Istanza Del Server"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Descrittore stringa per l'istanza del server"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Utilizza nome istanza"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Usa il nome dell'istanza nella barra del titolo"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Limita visualizzazione `Informazioni`"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Mostra la modalità `Informazioni` solo ai superusers"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Nome azienda"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Nome interno dell'azienda"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "URL Base"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "URL di base per l'istanza del server"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Valuta predefinita"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "giorni"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Scarica dall'URL"
-#: common/models.py:1307
+#: common/models.py:1364
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:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Limite Dimensione Download"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Dimensione massima consentita per il download dell'immagine remota"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "User-agent utilizzato per scaricare dall'URL"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Richiesta conferma"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Richiede una conferma esplicita dell'utente per una determinata azione."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Profondità livelli"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Aggiorna intervallo di controllo"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Backup automatico"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr "Abilita il backup automatico di database e file multimediali"
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Intervallo Di Backup Automatico"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro"
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
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:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
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:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
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:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Supporto Codice A Barre"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Codice a barre inserito scaduto"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Tempo di ritardo di elaborazione codice a barre"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Codice a Barre Supporto Webcam"
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr "Consenti la scansione del codice a barre tramite webcam nel browser"
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Abilita il campo revisione per l'articolo"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "Schema di espressione regolare per l'articolo corrispondente IPN"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Consenti duplicati IPN"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Permetti a più articoli di condividere lo stesso IPN"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Permetti modifiche al part number interno (IPN)"
-#: common/models.py:1454
+#: common/models.py:1523
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:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Copia I Dati Della distinta base dell'articolo"
-#: common/models.py:1460
+#: common/models.py:1529
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:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Copia I Dati Parametro dell'articolo"
-#: common/models.py:1466
+#: common/models.py:1535
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:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Copia I Dati dell'Articolo Test"
-#: common/models.py:1472
+#: common/models.py:1541
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:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Copia Template Parametri Categoria"
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr "Copia i modelli dei parametri categoria quando si crea un articolo"
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Modello"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Gli articoli sono modelli per impostazione predefinita"
-#: common/models.py:1490
+#: common/models.py:1559
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:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Componente"
-#: common/models.py:1496
+#: common/models.py:1565
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:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Acquistabile"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Gli articoli sono acquistabili per impostazione predefinita"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Vendibile"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Gli articoli sono acquistabili per impostazione predefinita"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Gli articoli sono tracciabili per impostazione predefinita"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Virtuale"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Gli articoli sono virtuali per impostazione predefinita"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Mostra l'importazione nelle viste"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Mostra la procedura guidata di importazione in alcune viste articoli"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Mostra articoli correlati"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Visualizza parti correlate per ogni articolo"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Dati iniziali dello stock"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Dati iniziali del fornitore"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Formato di visualizzazione del nome articolo"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Formato per visualizzare il nome dell'articolo"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Icona predefinita Categoria Articolo"
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)"
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Usa Prezzi Fornitore"
-#: common/models.py:1600
+#: common/models.py:1669
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:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Ignora la Cronologia Acquisti"
-#: common/models.py:1608
+#: common/models.py:1677
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:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Utilizzare i prezzi degli articoli in stock"
-#: common/models.py:1616
+#: common/models.py:1685
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:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Età dei prezzi degli articoli in stock"
-#: common/models.py:1624
+#: common/models.py:1693
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:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Utilizza Variazione di Prezzo"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Includi la variante dei prezzi nei calcoli dei prezzi complessivi"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Solo Varianti Attive"
-#: common/models.py:1639
+#: common/models.py:1708
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:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
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:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Prezzi interni"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Abilita prezzi interni per gli articoli"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Sovrascrivi Prezzo Interno"
-#: common/models.py:1662
+#: common/models.py:1731
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:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Abilita stampa etichette"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Abilita la stampa di etichette dall'interfaccia web"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "Etichetta Immagine DPI"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Abilita Report di Stampa"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Abilita generazione di report di stampa"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Modalità Debug"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Genera report in modalità debug (output HTML)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Dimensioni pagina"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Dimensione predefinita della pagina per i report PDF"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Abilita Rapporto di Prova"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Abilita generazione di stampe di prova"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Allega Rapporto di Prova"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Seriali Unici Globali"
-#: common/models.py:1721
+#: common/models.py:1776
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:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Auto Riempimento Numeri Seriali"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Auto riempimento numeri nel modulo"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Elimina scorte esaurite"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Modello Codice a Barre"
-#: common/models.py:1742
+#: common/models.py:1797
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:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Scadenza giacenza"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Abilita funzionalità di scadenza della giacenza"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Vendi giacenza scaduta"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Consenti la vendita di stock scaduti"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Tempo di Scorta del Magazzino"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Crea giacenza scaduta"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Permetti produzione con stock scaduto"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Controllo della proprietà della giacenza"
-#: common/models.py:1775
+#: common/models.py:1830
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:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Icona Predefinita Ubicazione di Magazzino"
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr "Icona Predefinita Ubicazione di Magazzino (vuoto significa nessuna icona)"
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Modello Di Riferimento Ordine Di Produzione"
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione"
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Modello Di Riferimento Ordine Di Vendita"
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita"
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Spedizione Predefinita Ordine Di Vendita"
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita"
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Modifica Ordini Di Vendita Completati"
-#: common/models.py:1908
+#: common/models.py:1963
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:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Modello di Riferimento Ordine D'Acquisto"
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto"
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Modifica Ordini Di Acquisto Completati"
-#: common/models.py:1938
+#: common/models.py:1993
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:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Abilita password dimenticata"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr "Abilita la funzione password dimenticata nelle pagine di accesso"
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Abilita registrazione"
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso"
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "SSO abilitato"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "Abilita SSO nelle pagine di accesso"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Abilita registrazione SSO"
-#: common/models.py:1973
+#: common/models.py:2028
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:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "Email richiesta"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "Riempimento automatico degli utenti SSO"
-#: common/models.py:2019
+#: common/models.py:2074
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:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "Posta due volte"
-#: common/models.py:2026
+#: common/models.py:2081
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:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Password due volte"
-#: common/models.py:2032
+#: common/models.py:2087
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:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Domini consentiti"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Gruppo iscrizione"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Applica MFA"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Gli utenti devono utilizzare la sicurezza a due fattori."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Controlla i plugin all'avvio"
-#: common/models.py:2061
+#: common/models.py:2116
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:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "Abilita l'integrazione URL"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Attiva plugin per aggiungere percorsi URL"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Attiva integrazione navigazione"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Abilita i plugin per l'integrazione nella navigazione"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "Abilita l'app integrata"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Abilita plugin per aggiungere applicazioni"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Abilita integrazione pianificazione"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Abilita i plugin per eseguire le attività pianificate"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Abilita eventi integrati"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Abilita plugin per rispondere agli eventi interni"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Funzionalità Dell'Inventario"
-#: common/models.py:2119
+#: common/models.py:2181
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:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Inventario periodico automatico"
-#: common/models.py:2135
+#: common/models.py:2197
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:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
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:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole"
+#: common/models.py:2224
+msgid "Create Template on Upload"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
+
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Nascondi Articoli Inattivi"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Mostra articoli sottoscritti"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Mostra gli articoli sottoscritti nella homepage"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Mostra le categorie sottoscritte"
-#: common/models.py:2227
+#: common/models.py:2294
msgid "Show subscribed part categories on the homepage"
msgstr "Mostra le categorie dei componenti sottoscritti nella homepage"
-#: common/models.py:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Mostra ultimi articoli"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Mostra gli ultimi articoli sulla homepage"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2239
+#: common/models.py:2306
msgid "Show BOMs that await validation on the homepage"
msgstr "Mostra le distinte base che attendono la convalida sulla homepage"
-#: common/models.py:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Mostra le modifiche recenti alle giacenze"
-#: common/models.py:2245
+#: common/models.py:2312
msgid "Show recently changed stock items on the homepage"
msgstr "Mostra le giacenze modificate di recente nella homepage"
-#: common/models.py:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Mostra disponibilità scarsa delle giacenze"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Mostra disponibilità scarsa degli articoli sulla homepage"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Mostra scorte esaurite"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Mostra scorte necessarie"
-#: common/models.py:2263
+#: common/models.py:2330
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:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Mostra scorte esaurite"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Mostra gli articoli stock scaduti nella home page"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Mostra scorte obsolete"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Mostra gli elementi obsoleti esistenti sulla home page"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Mostra produzioni in attesa"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Mostra produzioni in attesa sulla homepage"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Mostra produzioni in ritardo"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Mostra produzioni in ritardo sulla home page"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Mostra ordini di produzione inevasi"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Mostra ordini di produzione inevasi sulla home page"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Mostra Ordini di Produzione in ritardo"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Mostra Ordini di Produzione in ritardo sulla home page"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Mostra Ordini di Vendita inevasi"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Mostra Ordini di Vendita inevasi sulla home page"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Mostra Ordini di Vendita in ritardo"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Mostra Ordini di Vendita in ritardo sulla home page"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr ""
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Mostra Notizie"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Mostra notizie sulla home page"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:2330
+#: common/models.py:2397
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:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Stampante per etichette predefinita"
-#: common/models.py:2338
+#: common/models.py:2405
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:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Visualizzazione dell'etichetta in linea"
-#: common/models.py:2346
+#: common/models.py:2413
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:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Cerca Articoli"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
msgstr "Mostra articoli della ricerca nella finestra di anteprima"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2359
+#: common/models.py:2426
msgid "Display supplier parts in search preview window"
msgstr "Mostra articoli del fornitore nella finestra di anteprima"
-#: common/models.py:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Cerca Articoli Produttore"
-#: common/models.py:2365
+#: common/models.py:2432
msgid "Display manufacturer parts in search preview window"
msgstr "Mostra articoli del produttore nella finestra di anteprima"
-#: common/models.py:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Nascondi Articoli Inattivi"
-#: common/models.py:2371
+#: common/models.py:2438
msgid "Excluded inactive parts from search preview window"
msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca"
-#: common/models.py:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Cerca Categorie"
-#: common/models.py:2377
+#: common/models.py:2444
msgid "Display part categories in search preview window"
msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca"
-#: common/models.py:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Cerca Giacenze"
-#: common/models.py:2383
+#: common/models.py:2450
msgid "Display stock items in search preview window"
msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca"
-#: common/models.py:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Nascondi elementi non disponibili"
-#: common/models.py:2390
+#: common/models.py:2457
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:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Cerca Ubicazioni"
-#: common/models.py:2397
+#: common/models.py:2464
msgid "Display stock locations in search preview window"
msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca"
-#: common/models.py:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Cerca Aziende"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Mostra le aziende nella finestra di anteprima di ricerca"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Cerca Ordini Di Produzione"
-#: common/models.py:2409
+#: common/models.py:2476
msgid "Display build orders in search preview window"
msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca"
-#: common/models.py:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Cerca Ordini di Acquisto"
-#: common/models.py:2415
+#: common/models.py:2482
msgid "Display purchase orders in search preview window"
msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca"
-#: common/models.py:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Escludi Ordini D'Acquisto Inattivi"
-#: common/models.py:2422
+#: common/models.py:2489
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca"
-#: common/models.py:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Cerca Ordini Di Vendita"
-#: common/models.py:2429
+#: common/models.py:2496
msgid "Display sales orders in search preview window"
msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca"
-#: common/models.py:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Escludi Ordini Di Vendita Inattivi"
-#: common/models.py:2436
+#: common/models.py:2503
msgid "Exclude inactive sales orders from search preview window"
msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca"
-#: common/models.py:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Cerca Ordini Di Reso"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Risultati Dell'Anteprima Di Ricerca"
-#: common/models.py:2458
+#: common/models.py:2525
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:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Ricerca con regex"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr ""
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr ""
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr ""
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Mostra quantità nei moduli"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "Il tasto Esc chiude i moduli"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Utilizzare il tasto Esc per chiudere i moduli modali"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Barra di navigazione fissa"
-#: common/models.py:2489
+#: common/models.py:2556
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:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Formato Data"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Formato predefinito per visualizzare le date"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Programmazione Prodotto"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Mostra informazioni sulla pianificazione del prodotto"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Inventario Prodotto"
-#: common/models.py:2516
+#: common/models.py:2583
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:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Lunghezza Stringa Tabella"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr ""
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr ""
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Utente"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr "Quantità prezzo limite"
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Prezzo"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr "Prezzo unitario in quantità specificata"
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr "Scadenza"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Scadenza in cui questa notifica viene ricevuta"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Nome per questa notifica"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "È questa notifica attiva"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Token per l'accesso"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Segreto"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Segreto condiviso per HMAC"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "ID Messaggio"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Identificatore unico per questo messaggio"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Host da cui questo messaggio è stato ricevuto"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Intestazione"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Intestazione di questo messaggio"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Contenuto"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Contenuto di questo messaggio"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Scadenza in cui questo messaggio è stato ricevuto"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Lavorato il"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "Il lavoro su questo messaggio è terminato?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Titolo"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Collegamento"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Pubblicato"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Autore"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Riepilogo"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Letto"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "Queste notizie sull'elemento sono state lette?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "File immagine"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Allegato"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "File mancante"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Link esterno mancante"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Seleziona file da allegare"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Commento"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr "Dati"
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Contesto"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Risultato"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Nuovo {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr "Un nuovo ordine è stato creato e assegnato a te"
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr "Elemento ricevuto"
-#: common/notifications.py:332
+#: common/notifications.py:346
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:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr "Errore generato dal plugin"
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Nome del file"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr "Abbina Campi"
msgid "Match Items"
msgstr "Elementi corrispondenti"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Corrispondenza campi non riuscita"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Articoli importati"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Azienda"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Aziende"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Descrizione azienda"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "Descrizione dell'azienda"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Sito Web"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Sito web aziendale"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Telefono"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Numero di telefono di contatto"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Indirizzo email"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Contatto"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Punto di contatto"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Collegamento alle informazioni aziendali esterne"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "Vendi oggetti a questa azienda?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "Acquistate articoli da questa azienda?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Questa azienda produce articoli?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Valuta predefinita utilizzata per questa azienda"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Indirizzo"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Codice articolo produttore"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Articolo di base"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Seleziona articolo"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Produttore"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Seleziona Produttore"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr "Codice articolo produttore (MPN)"
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "URL dell'articolo del fornitore"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Descrizione articolo costruttore"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Nome parametro"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Valore"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Valore del parametro"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Unità"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Unità parametri"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Articolo Fornitore"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo"
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Fornitore"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Seleziona fornitore"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Unità di giacenza magazzino fornitore"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Selezionare un produttore"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "URL dell'articolo del fornitore"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Descrizione articolo fornitore"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Nota"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "costo base"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Onere minimo (ad esempio tassa di stoccaggio)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Imballaggio del pezzo"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Quantità Confezione"
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "multiplo"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Ordine multiplo"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Quantità disponibile dal fornitore"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Disponibilità Aggiornata"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Data dell’ultimo aggiornamento dei dati sulla disponibilità"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Valuta predefinita utilizzata per questo fornitore"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "In magazzino"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr "Inattivo"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Crea ordine d'acquisto"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Modifica le informazioni dell'azienda"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Modifica azienda"
@@ -4605,11 +4784,12 @@ msgstr "Elimina Azienda"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Scarica immagine dall'URL"
msgid "Delete image"
msgstr "Elimina immagine"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Cliente"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Telefono"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Rimuovi"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ msgstr "Giacenza Fornitore"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Nuovo Ordine di Acquisto"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ msgstr "Assegna Giacenza"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Produttori"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Articoli ordinati"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Modifica articolo produttore"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Cancella articolo produttore"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Articolo interno"
@@ -4837,8 +5017,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Elementi in Giacenza Impegnati"
msgid "Contacts"
msgstr "Contatti"
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
msgid "Edit Supplier Part"
msgstr "Modifica fornitore articolo"
-#: company/templates/company/supplier_part.html:68
#: company/templates/company/supplier_part.html:69
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Duplica Articoli Fornitore"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr "Cancella Articolo Fornitore"
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Elimina Articolo Fornitore"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Nessuna informazione sul fornitore disponibile"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Fornitore articolo in giacenza"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Crea nuova allocazione magazzino"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Nuovo Elemento in giacenza"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Ordini articoli fornitore"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Informazioni Prezzi"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Aggiungi riduzione prezzo"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Articoli in magazzino"
@@ -5022,99 +5203,99 @@ msgstr "Nuovo cliente"
msgid "New Company"
msgstr "Nuova Azienda"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Inviato"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr "Dati"
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr "Valido"
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Sconosciuto"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Prezzo Totale"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr "Stato dell'ordine"
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Riferimento ordine"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr "Nessun ordine di acquisto corrispondente trovato"
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr "Ordine"
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Ordine D'Acquisto"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr "Restituisci ordine"
@@ -5387,751 +5564,782 @@ msgstr "Restituisci ordine"
msgid "Total price for this order"
msgstr "Prezzo totale dell'ordine"
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr "Il contatto non corrisponde all'azienda selezionata"
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr "Descrizione dell'ordine (opzionale)"
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr "Seleziona il codice del progetto per questo ordine"
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Collegamento a un sito web esterno"
-#: order/models.py:310
+#: order/models.py:317
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:324
+#: order/models.py:331
msgid "Created By"
msgstr "Creato Da"
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr "Utente o gruppo responsabile di questo ordine"
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr "Punto di contatto per questo ordine"
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Riferimento ordine"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Stato ordine d'acquisto"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Azienda da cui sono stati ordinati gli articoli"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Riferimento fornitore"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Codice di riferimento ordine fornitore"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "ricevuto da"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Data di emissione"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Data di emissione ordine"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Data ordine completato"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr "Il fornitore dell'articolo deve corrispondere al fornitore dell'ordine di produzione"
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "La quantità deve essere un numero positivo"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Azienda da cui sono stati ordinati gli elementi"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Riferimento Cliente "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Codice di riferimento Ordine del Cliente"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Data di spedizione"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "spedito da"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr "Solo un ordine aperto può essere contrassegnato come completo"
-#: order/models.py:1088
+#: order/models.py:1105
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:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "L'ordine non può essere completato perché ci sono elementi di riga incompleti"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Quantità Elementi"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Riferimento Linea Elemento"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Note linea elemento"
-#: order/models.py:1393
+#: order/models.py:1410
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:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr "Contesto"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "Contesto aggiuntivo per questa voce"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Prezzo unitario"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "L'articolo del fornitore deve corrispondere al fornitore"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "eliminato"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Articolo Fornitore"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Ricevuto"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Numero di elementi ricevuti"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Prezzo di Acquisto"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Prezzo di acquisto unitario"
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr "Dove l'Acquirente desidera che questo elemento venga immagazzinato?"
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
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:1642
+#: order/models.py:1658
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:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Prezzo di Vendita"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Prezzo unitario di vendita"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Spedito"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Quantità spedita"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Data di spedizione"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Verificato Da"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Utente che ha controllato questa spedizione"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Spedizione"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Numero di spedizione"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Numero di monitoraggio"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Informazioni di monitoraggio della spedizione"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Numero Fattura"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Numero di riferimento per la fattura associata"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "La spedizione è già stata spedita"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "La spedizione non ha articoli di stock assegnati"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "L'elemento di magazzino non è stato assegnato"
-#: order/models.py:1973
+#: order/models.py:2006
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:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr "Impossibile allocare stock a una riga senza un articolo"
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr "La quantità deve essere 1 per l'elemento serializzato"
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "L'ordine di vendita non corrisponde alla spedizione"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "La spedizione non corrisponde all'ordine di vendita"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Linea"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Riferimento della spedizione ordine di vendita"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Elemento"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Seleziona elemento stock da allocare"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Inserisci la quantità assegnata alla giacenza"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr "Seleziona l'elemento da restituire dal cliente"
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr "Data di ricezione"
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr "Risultati"
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr "Nome Fornitore"
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "L'ordine non può essere cancellato"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr "Consenti di chiudere l'ordine con elementi di riga incompleti"
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr "L'ordine ha elementi di riga incompleti"
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "L'ordine non è aperto"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Valuta prezzo d'acquisto"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Numero Dell'articolo Interno"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "L'articolo del fornitore deve essere specificato"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "L'ordine di acquisto deve essere specificato"
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr "Il fornitore deve essere abbinato all'ordine d'acquisto"
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "L'ordine di acquisto deve essere abbinato al fornitore"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Elemento Riga"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "L'elemento di riga non corrisponde all'ordine di acquisto"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr "Inserisci il codice univoco per gli articoli in arrivo"
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Inserisci i numeri di serie per gli articoli stock in arrivo"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Codice a Barre"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr "Codice a barre scansionato"
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Il codice a barre è già in uso"
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr "Deve essere fornita una quantità intera per gli articoli rintracciabili"
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Gli elementi di linea devono essere forniti"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "La destinazione deve essere specificata"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "I valori dei codici a barre forniti devono essere univoci"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Valuta prezzo di vendita"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr "Nessun dettaglio di spedizione fornito"
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr "L'elemento di riga non è associato a questo ordine"
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr "La quantità deve essere positiva"
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Inserisci i numeri di serie da assegnare"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr "La spedizione è già stata spedita"
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr "La spedizione non è associata con questo ordine"
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr "Nessuna corrispondenza trovata per i seguenti numeri di serie"
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
-msgstr "I seguenti numeri di serie sono già assegnati"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Perso"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Reso"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "In corso"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Indietro"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Riparare"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Sostituire"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Rimborso"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Rifiuta"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr "Ordine D'Acquisto in ritardo"
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr "L'ordine d'acquisto {po} è in ritardo"
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr "Ordini Di Vendita in ritardo"
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr "L'ordine di vendita {so} è ora in ritardo"
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
msgid "Print purchase order report"
msgstr "Stampa report ordine acquisto"
-#: order/templates/order/order_base.html:53
-#: order/templates/order/return_order_base.html:62
-#: order/templates/order/sales_order_base.html:62
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr "Esportare File Ordine"
-#: order/templates/order/order_base.html:59
-#: order/templates/order/return_order_base.html:72
-#: order/templates/order/sales_order_base.html:71
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr "Azioni Ordine"
-#: order/templates/order/order_base.html:64
-#: order/templates/order/return_order_base.html:76
-#: order/templates/order/sales_order_base.html:75
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Modifica ordine"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr "Duplica Ordine"
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Annulla l'ordine"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Contrassegna ordine come completato"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Completa l'ordine"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Descrizione Dell'Ordine"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr "Nessuna informazione sul fornitore disponibile"
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr "Elementi della linea completati"
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Incompleto"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr "Emesso"
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Costo totale"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "Il costo totale non può essere calcolato"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr "Duplica selezionati"
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Elementi Ricevuti"
msgid "Order Notes"
msgstr "Note dell'Ordine"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr "Stampa rapporto ordine di reso"
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr "Stampa lista d'imballaggio"
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Riferimento Cliente"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr "Costo Totale"
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr "Dettagli dell'ordine"
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr "Stampa il rapporto dell'ordine delle vendite"
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr "Spedisci oggetti"
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr "Completa Ordine Di Vendita"
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
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:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr "Spedizione in sospeso"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Azioni"
@@ -6383,39 +6591,40 @@ msgstr "Nuova spedizione"
msgid "Match Supplier Parts"
msgstr "Corrispondenza Articoli del Fornitore"
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr "Ordine di Vendita non trovato"
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Prezzo non trovato"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "Aggiornato {part} prezzo unitario a {price}"
-#: order/views.py:421
+#: order/views.py:422
#, 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:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr "IPN - Numero di riferimento interno"
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr "Revisione"
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Parole Chiave"
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr "Id Categoria"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "Nome Categoria"
@@ -6440,11 +6649,11 @@ msgstr "Posizione Predefinita ID"
msgid "Default Supplier ID"
msgstr "ID Fornitore Predefinito"
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr "Variante Di"
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr "Scorta Minima"
@@ -6452,23 +6661,23 @@ msgstr "Scorta Minima"
msgid "Used In"
msgstr "Utilizzato In"
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr "In Costruzione"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr "Costo Minimo"
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr "Costo Massimo"
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr "ID principale"
@@ -6481,8 +6690,8 @@ msgstr "Nome Principale"
msgid "Category Path"
msgstr "Percorso Categoria"
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr "IPN Principale"
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr "Prezzo Minimo"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr "Prezzo Massimo"
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr "Ordine D'Acquisto In Arrivo"
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr "Ordine di Vendita in Uscita"
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr "Giacenza prodotta dall'Ordine di Costruzione"
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr "Giacenza richiesta per l'Ordine di Produzione"
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr "Convalida l'intera Fattura dei Materiali"
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr "Questa opzione deve essere selezionata"
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Categoria"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Posizione Predefinita"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Giacenze Totali"
@@ -6641,789 +6854,789 @@ msgstr "Giacenze Totali"
msgid "Input quantity for price calculation"
msgstr "Digita la quantità per il calcolo del prezzo"
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Categoria Articoli"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Categorie Articolo"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Posizione predefinita per gli articoli di questa categoria"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr "Strutturale"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "Le parti non possono essere assegnate direttamente a una categoria strutturale, ma possono essere assegnate a categorie subordinate."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Keywords predefinite"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr "Parole chiave predefinite per gli articoli in questa categoria"
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr "Icona"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr "Icona (facoltativa)"
-#: part/models.py:178
+#: part/models.py:180
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:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr "Scelta non valida per l'articolo principale"
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr "Esiste già un elemento stock con questo numero seriale"
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr "Non è consentito duplicare IPN nelle impostazioni dell'articolo"
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr "Un articolo con questo Nome, IPN e Revisione esiste già."
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!"
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Nome articolo"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr "È Template"
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr "Quest'articolo è un articolo di template?"
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr "Questa parte è una variante di un altro articolo?"
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr "Parole chiave per migliorare la visibilità nei risultati di ricerca"
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Categoria articolo"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr "Numero di revisione o di versione"
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr "Dove viene normalmente immagazzinato questo articolo?"
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr "Fornitore predefinito"
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr "Articolo fornitore predefinito"
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr "Scadenza Predefinita"
-#: part/models.py:1130
+#: part/models.py:1191
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:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr "Livello minimo di giacenza consentito"
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr "Unita di misura per questo articolo"
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr "Questo articolo può essere costruito da altri articoli?"
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr "Questo articolo può essere utilizzato per costruire altri articoli?"
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr "Questo articolo ha il tracciamento per gli elementi unici?"
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr "Quest'articolo può essere acquistato da fornitori esterni?"
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr "Questo pezzo può essere venduto ai clienti?"
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr "Quest'articolo è attivo?"
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
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:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr "Somma di controllo Distinta Base"
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr "Somma di controllo immagazzinata Distinta Base"
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr "Distinta Base controllata da"
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr "Data di verifica Distinta Base"
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr "Creazione Utente"
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr "Ultimo Inventario"
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr "Vendita multipla"
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr "Valuta utilizzata per calcolare i prezzi"
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr "Costo Minimo Distinta Base"
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr "Costo minimo dei componenti dell'articolo"
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr "Costo Massimo Distinta Base"
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr "Costo massimo dei componenti dell'articolo"
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr "Importo Acquisto Minimo"
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr "Costo minimo di acquisto storico"
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr "Importo massimo acquisto"
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr "Costo massimo di acquisto storico"
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr "Prezzo Interno Minimo"
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr "Costo minimo basato su interruzioni di prezzo interne"
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr "Prezzo Interno Massimo"
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr "Costo massimo basato su interruzioni di prezzo interne"
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr "Prezzo Minimo Fornitore"
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr "Prezzo minimo articolo da fornitori esterni"
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr "Prezzo Massimo Fornitore"
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr "Prezzo massimo dell'articolo proveniente da fornitori esterni"
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr "Variazione di costo minimo"
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr "Costo minimo calcolato di variazione dell'articolo"
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr "Massima variazione di costo"
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr "Costo massimo calcolato di variazione dell'articolo"
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr "Costo minimo totale calcolato"
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr "Costo massimo totale calcolato"
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr "Prezzo Di Vendita Minimo"
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr "Prezzo minimo di vendita basato sulle interruzioni di prezzo"
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr "Prezzo Di Vendita Massimo"
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr "Prezzo massimo di vendita basato sulle interruzioni di prezzo"
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr "Costo Di Vendita Minimo"
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr "Prezzo storico minimo di vendita"
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr "Costo Di Vendita Minimo"
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr "Prezzo storico massimo di vendita"
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr "Articolo per l'inventario"
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr "Contatore Elemento"
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr "Numero di scorte individuali al momento dell'inventario"
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr "Totale delle scorte disponibili al momento dell'inventario"
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Data"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr "Data in cui è stato effettuato l'inventario"
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "Note aggiuntive"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr "Utente che ha eseguito questo inventario"
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr "Costo Minimo Scorta"
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr "Costo minimo stimato di magazzino a disposizione"
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr "Costo Massimo Scorte"
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr "Costo massimo stimato di magazzino a disposizione"
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr "File Report Inventario (generato internamente)"
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr "Conteggio Articolo"
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr "Numero di articoli oggetto d'inventario"
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr "Utente che ha richiesto questo report inventario"
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-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:3626
+msgid "Test templates can only be created for testable parts"
+msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr "Nome Test"
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr "Inserisci un nome per la prova"
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr "Descrizione Di Prova"
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr "Inserisci descrizione per questa prova"
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Abilitato"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr "Richiesto"
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr "Questa prova è necessaria per passare?"
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr "Valore richiesto"
-#: part/models.py:3635
+#: part/models.py:3686
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:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr "Allegato Richiesto"
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr "Questa prova richiede un file allegato quando si aggiunge un risultato di prova?"
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr "Il nome del modello del parametro deve essere univoco"
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr "Nome Parametro"
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr "Descrizione del parametro"
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr "Articolo principale"
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Modello Parametro"
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr "Valore del Parametro"
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Valore Predefinito"
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr "Valore Parametro Predefinito"
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr "ID articolo o nome articolo"
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr "Valore ID articolo univoco"
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr "Valore IPN articolo"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr "Livello"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr "Livello distinta base"
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr "Seleziona articolo principale"
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr "Articolo subordinato"
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr "Seleziona l'articolo da utilizzare nella Distinta Base"
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr "Quantità Distinta Base per questo elemento Distinta Base"
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr "Questo elemento della Distinta Base è opzionale"
-#: part/models.py:4266
+#: part/models.py:4323
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:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Eccedenza"
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)"
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr "Riferimento Elemento Distinta Base"
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr "Note Elemento Distinta Base"
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr "Codice di controllo"
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr "Codice di controllo Distinta Base"
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr "Convalidato"
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
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:4314
+#: part/models.py:4371
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:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili"
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr "L'articolo subordinato deve essere specificato"
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr "Elemento Distinta Base Sostituito"
-#: part/models.py:4572
+#: part/models.py:4634
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:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr "Elemento principale Distinta Base"
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr "Sostituisci l'Articolo"
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr "Articolo 1"
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr "Articolo 2"
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr "Seleziona Prodotto Relativo"
-#: part/models.py:4637
+#: part/models.py:4699
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:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr "La relazione duplicata esiste già"
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr "Valuta di acquisto di questo articolo in stock"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr "Articolo Originale"
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr "Seleziona l'articolo originale da duplicare"
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Copia immagine"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr "Copia immagine dall'articolo originale"
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr "Copia Distinta Base"
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr "Copia fattura dei materiali dall'articolo originale"
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Copia parametri"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr "Copia i dati dei parametri dall'articolo originale"
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr "Quantità iniziale"
-#: part/serializers.py:514
+#: part/serializers.py:558
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:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr "Ubicazione Iniziale Magazzino"
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr "Specificare l'ubicazione iniziale del magazzino per questo Articolo"
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr "Seleziona il fornitore (o lascia vuoto per saltare)"
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Seleziona il produttore (o lascia vuoto per saltare)"
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr "Codice articolo Produttore"
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr "L'azienda selezionata non è un fornitore valido"
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr "L'azienda selezionata non è un produttore valido"
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr "L'articolo del produttore che corrisponde a questo MPN esiste già"
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr "L'articolo del fornitore che corrisponde a questo SKU esiste già"
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr "Duplica articolo"
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr "Copia i dati iniziali da un altro Articolo"
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr "Stock iniziale"
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr "Crea Articolo con quantità di scorta iniziale"
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr "Informazioni Fornitore"
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr "Aggiungi le informazioni iniziali del fornitore per questo articolo"
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr "Copia Parametri Categoria"
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr "Copia i parametri dai modelli della categoria articolo selezionata"
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
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:1204
+#: part/serializers.py:1257
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:1214
+#: part/serializers.py:1267
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:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr "Genera Report"
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr "Genera file di report contenente dati di inventario calcolati"
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr "Aggiorna Articoli"
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr "Aggiorna gli articoli specificati con i dati calcolati di inventario"
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr "La funzione Inventario non è abilitata"
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Controllo in background non riuscito"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr "Aggiorna"
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr "Aggiorna i prezzi per questo articolo"
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr "Puoi produrre"
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr "Seleziona l'articolo da cui copiare la distinta base"
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr "Rimuovi Dati Esistenti"
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr "Rimuovi elementi distinta base esistenti prima di copiare"
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr "Includi Ereditato"
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr "Includi gli elementi Distinta Base ereditati da prodotti template"
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr "Salta Righe Non Valide"
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr "Abilita questa opzione per saltare le righe non valide"
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr "Copia Articoli sostitutivi"
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Copia articoli sostitutivi quando duplichi gli elementi distinta base"
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr "Cancella Distinta Base esistente"
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr "Rimuovi elementi distinta base esistenti prima del caricamento"
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr "Nessuna colonna articolo specificata"
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr "Trovati più articoli corrispondenti"
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr "Nessun articolo corrispondente trovato"
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr "L'articolo non è indicato come componente"
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr "Quantità non fornita"
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr "Quantità non valida"
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr "Almeno un elemento della distinta base è richiesto"
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr "Quantità Totale"
@@ -7932,9 +8157,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:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr "Inventario"
@@ -8093,142 +8318,146 @@ msgstr "Seleziona il formato del file"
msgid "Part List"
msgstr "Elenco Articolo"
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr "Sei iscritto alle notifiche per questo articolo"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "Sottoscrivi le notifiche per questo articolo"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Stampa Etichetta"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr "Mostra informazioni sui prezzi"
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr "Azioni magazzino"
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr "Conta articoli magazzino"
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr "Trasferisci giacenza"
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr "Azioni articolo"
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr "Duplica articolo"
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Modifica articolo"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr "Cancella articolo"
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
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:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr "L'articolo può essere assemblato da altri articoli"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr "L'articolo può essere utilizzato negli assemblaggi"
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr "Lo stock dell'articolo è tracciato dal numero di serie"
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr "L'articolo può essere acquistato da fornitori esterni"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr "La parte può essere venduta ai clienti"
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr "L'articolo non è attivo"
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr "L'Articolo è virtuale (non è un articolo fisico)"
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr "Mostra i Dettagli Articolo"
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr "Assegnato agli Ordini di Produzione"
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr "Assegnato agli Ordini di Vendita"
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr "Livello minimo di giacenza"
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr "Fascia di Prezzo"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr "Ultimo Numero Di Serie"
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "Ricerca per numero seriale"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr "Varianti"
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Magazzino"
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Modifica"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr "Ultimo aggiornamento"
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr "Immagine articolo non trovata"
msgid "Part Pricing"
msgstr "Prezzo Articolo"
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "Nessuna azione specificata"
msgid "No matching action found"
msgstr "Nessuna azione corrispondente trovata"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Nessuna corrispondenza trovata per i dati del codice a barre"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Corrispondenza trovata per i dati del codice a barre"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr "Il codice a barre corrisponde a un elemento esistente"
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr "Scorte insufficienti disponibili"
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr "InvenTree Codice a Barre"
@@ -8756,7 +9028,7 @@ 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:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr "Apri collegamento"
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr "Configurazione Plugin"
msgid "Plugin Configurations"
msgstr "Configurazioni Plugin"
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr "Key dei plugin"
@@ -8955,7 +9223,7 @@ msgstr "Key dei plugin"
msgid "PluginName of the plugin"
msgstr "PluginName del plugin"
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr "Nome Pacchetto"
@@ -8984,17 +9252,17 @@ msgstr "Plugin Integrato"
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr "Metodo"
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr "Nessun autore trovato"
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr ""
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
msgid "Source URL"
msgstr "URL di origine"
-#: plugin/serializers.py:83
+#: plugin/serializers.py:108
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:92
+#: plugin/serializers.py:117
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:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr "Versione"
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr "Conferma installazione plugin"
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
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:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr "Installazione non confermata"
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr "Deve essere fornito uno dei nomi del pacchetto URL"
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr "Nessun oggetto valido fornito nel modello"
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr "Il file del modello '{template}' è mancante o non esiste"
@@ -9198,141 +9546,149 @@ msgstr "Nome modello"
#: report/models.py:156
msgid "Template description"
-msgstr ""
+msgstr "Descrizione del template"
#: report/models.py:162
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Formato del nome file"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Filtri"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Larghezza [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Larghezza dell'etichetta, specificata in mm"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Altezza [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Larghezza dell'etichetta, specificata in mm"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr "Report file snippet"
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr "Descrizione file snippet"
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr "Risorsa"
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr "Report file risorsa"
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr "File risorsa descrizione"
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr "Il fornitore è stato eliminato"
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr "Prezzo Unitario"
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr "Totale"
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr "Assegnazioni"
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr "Risultati Test"
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr "Risultato"
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr "Passaggio"
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr "Fallito"
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr "Nessun risultato (richiesto)"
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr "Nessun risultato"
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr "Elementi installati"
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr "Seriale"
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr "ID Posizione"
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr "Percorso Ubicazione"
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr "ID Elemento Stock"
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr "Codici di stato"
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr "ID Articolo Fornitore"
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr "ID Fornitore"
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr "ID Cliente"
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr "Installato In"
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr "ID Costruttore"
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr "ID Ordine Vendita"
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr "ID Ordine D'acquisto"
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr "Revisione Necessaria"
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr "Elimina al esaurimento"
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr "Data di Scadenza"
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr "Obsoleto"
@@ -9560,594 +9920,598 @@ msgstr "Obsoleto"
msgid "Quantity is required"
msgstr "La quantità è richiesta"
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr "Deve essere fornita un articolo valido"
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
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:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Ubicazione magazzino"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Posizioni magazzino"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr "Proprietario"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr "Seleziona Owner"
-#: stock/models.py:189
+#: stock/models.py:195
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:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr "Esterno"
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr "Si tratta di una posizione esterna al magazzino"
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
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:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
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:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr "Non è possibile creare un elemento di magazzino per articoli virtuali"
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
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:721
+#: stock/models.py:798
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:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr "L'elemento non può appartenere a se stesso"
-#: stock/models.py:748
+#: stock/models.py:825
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:761
+#: stock/models.py:838
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:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr "Elemento di magazzino principale"
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr "Articolo base"
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr "Seleziona un fornitore articolo corrispondente per questo elemento di magazzino"
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr "Dove si trova questo articolo di magazzino?"
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr "Imballaggio di questo articolo di magazzino è collocato in"
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr "Questo elemento è stato installato su un altro elemento?"
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr "Numero di serie per questo elemento"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr "Codice lotto per questo elemento di magazzino"
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr "Quantità disponibile"
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr "Genera Costruzione"
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr "Costruisci per questo elemento di magazzino"
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr "Origina Ordine di Acquisto"
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr "Ordine d'acquisto per questo articolo in magazzino"
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr "Destinazione Ordine di Vendita"
-#: stock/models.py:921
+#: stock/models.py:998
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:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr "Elimina al esaurimento"
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr "Cancella questo Elemento di Magazzino quando la giacenza è esaurita"
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr "Prezzo di acquisto unitario al momento dell’acquisto"
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr "Convertito in articolo"
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr "L'articolo non è impostato come tracciabile"
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr "La quantità deve essere un numero intero"
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
-msgstr "I numeri di serie devono essere numeri interi"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr "La quantità non corrisponde ai numeri di serie"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "Numeri di serie già esistenti"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
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:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr "L'elemento di magazzino è installato in un altro elemento"
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr "L'elemento di magazzino contiene altri elementi"
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr "L'elemento di magazzino è stato assegnato a un cliente"
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr "L'elemento di magazzino è attualmente in produzione"
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr "Il magazzino serializzato non può essere unito"
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr "Duplica elementi di magazzino"
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo"
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr "Gli elementi di magazzino devono riferirsi allo stesso articolo fornitore"
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr "I codici di stato dello stock devono corrispondere"
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr "Le giacenze non possono essere spostate perché non disponibili"
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr "Note d'ingresso"
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr "Il valore deve essere fornito per questo test"
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr "L'allegato deve essere caricato per questo test"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr "Risultato Test"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr "Test valore output"
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr "Risultato della prova allegato"
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr "Note del test"
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr "Il numero di serie è troppo grande"
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr "Elemento principale"
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr "Scaduto"
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr "Elementi secondari"
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr "Inserisci il numero di elementi di magazzino da serializzare"
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, 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:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr "Inserisci i numeri di serie per i nuovi elementi"
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr "Posizione magazzino di destinazione"
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr "Note opzionali elemento"
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr "Numeri di serie non possono essere assegnati a questo articolo"
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "Numeri di serie già esistenti"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr "Seleziona elementi di magazzino da installare"
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr "Aggiungi nota di transazione (opzionale)"
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr "Elemento di magazzino non disponibile"
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr "L'articolo selezionato non è nella Fattura dei Materiali"
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr "Posizione di destinazione per gli elementi disinstallati"
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino"
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr "L'articolo selezionato non è una valida opzione per la conversione"
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr "Posizione di destinazione per l'elemento restituito"
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Sottoallocazioni"
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr "L'articolo deve essere vendibile"
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr "L'elemento è assegnato a un ordine di vendita"
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr "Elemento assegnato a un ordine di costruzione"
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr "Cliente a cui assegnare elementi di magazzino"
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr "L'azienda selezionata non è un cliente"
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr "Note sull'assegnazione delle scorte"
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr "Deve essere fornito un elenco degli elementi di magazzino"
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr "Note di fusione di magazzino"
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr "Consenti fornitori non corrispondenti"
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
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:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr "Consenti stato non corrispondente"
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
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:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr "Devono essere riforniti almeno due elementi in magazzino"
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr "Valore di chiave primaria StockItem"
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr "Note sugli spostamenti di magazzino"
@@ -10175,107 +10539,107 @@ msgstr "Respinto"
msgid "Quarantined"
msgstr "In quarantena"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Voce di tracciamento stock preesistente"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Elemento stock creato"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Elemento stock modificato"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Numero di serie assegnato"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Stock contato"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Stock aggiunto manualmente"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Stock rimosso manualmente"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Posizione cambiata"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Stock aggiornato"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Installato nell'assemblaggio"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Rimosso dall'assemblaggio"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Componente installato"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Elemento componente rimosso"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Diviso dall'elemento genitore"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Dividi elemento figlio"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Elemento stock raggruppato"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Convertito in variante"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Genera l'output dell'ordine creato"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Build order output completato"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Ordine di costruzione rifiutato"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Impegnato dall'ordine di costruzione"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Spedito contro l'ordine di vendita"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Ricevuto contro l'ordine di acquisto"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Restituito contro l'ordine di ritorno"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Inviato al cliente"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Restituito dal cliente"
@@ -10296,7 +10660,7 @@ msgstr "Questo elemento di magazzino non ha nessun elemento secondario"
msgid "Test Data"
msgstr "Dati di Test"
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr "Rapporto del Test"
@@ -10316,7 +10680,7 @@ msgstr "Note Elemento di magazzino"
msgid "Installed Stock Items"
msgstr "Elementi di magazzino installati"
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr "Installa Elemento Magazzino"
@@ -10328,208 +10692,212 @@ msgstr "Elimina tutti i risultati del test per questo elemento di magazzino"
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr "Individua elemento di magazzino"
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr "Scansiona nella posizione"
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr "Impostazioni di stampa"
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr "Azioni adeguamento giacenza"
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr "Conta giacenza"
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr "Aggiungi giacenza"
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr "Rimuovi giacenza"
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr "Serializza magazzino"
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr "Trasferisci giacenza"
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr "Assegna al cliente"
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr "Torna al magazzino"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr "Disinstalla elemento di magazzino"
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr "Disinstalla"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr "Installa elementi stock"
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr "Installa"
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr "Converti in variante"
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr "Duplica elemento di magazzino"
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr "Modifica elemento di magazzino"
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr "Cancella elemento di magazzino"
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Produzione"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr "Nessun produttore impostato"
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:252
-#: stock/templates/stock/location.html:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr "Sola lettura"
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr "Elemento di magazzino non disponibile"
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
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:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr "Modifica l'elemento di magazzino dalla visualizzazione generata."
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
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:295
+#: stock/templates/stock/item_base.html:292
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:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "pagina precedente"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr "Vai al numero di serie precedente"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr "pagina successiva"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr "Vai al numero di serie successivo"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr "Nessuna posizione impostata"
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr "Test"
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
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:437
+#: stock/templates/stock/item_base.html:434
#, 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:439
+#: stock/templates/stock/item_base.html:436
#, 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:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr "Nessun inventario eseguito"
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr "Selezionare una delle varianti dell'articolo elencate sotto."
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr "Attenzione"
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr "Questa azione non può essere facilmente annullata"
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ 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:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr "Esegui inventario per questa ubicazione di magazzino"
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr "Individua ubicazione di magazzino"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr "Scansiona gli elementi in magazzino in questa ubicazione"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr "Scansiona Elementi Stock"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr "Scansiona il contenitore magazzino in questa posizione"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr "Scansiona container"
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr "Azioni posizione"
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr "Modifica la posizione"
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr "Elimina la posizione"
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr "Posizione stock di livello superiore"
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr "Proprietario Posizione"
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
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:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr "Crea nuova posizione di magazzino"
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr "Nuova Posizione"
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr "Caricamento..."
msgid "Stock Tracking"
msgstr "Rilevamento Stock"
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr "Assegnazioni"
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr "Permesso negato"
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Elimina"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr "Impostazioni Ordine di Vendita"
msgid "Stock Settings"
msgstr "Impostazioni Magazzino"
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr "Non verificato"
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr "Principale"
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr "Invia Segnalazione Bug"
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr "copia negli appunti"
@@ -11738,23 +12102,24 @@ msgstr "Aggiungi allegato"
msgid "Barcode Identifier"
msgstr "Codice a Barre Identificativo"
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr "È necessario riavviare il server"
-#: templates/base.html:106
+#: templates/base.html:105
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:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr "Contatta l'amministratore per maggiori informazioni"
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,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:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr "Quantità richiesta"
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr "Clicca il seguente link per visualizzare questo articolo"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr "Quantità minima"
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr "Chiudi"
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
-msgstr ""
+msgstr "Ultima modifica"
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr "Aggiungi"
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr "Accesso Account Fallito"
msgid "An error occurred while attempting to login via your social network account."
msgstr "Si è verificato un errore durante il tentativo di accedere tramite il tuo account di social network."
-#: templates/socialaccount/authentication_error.html:13
-msgid "Contact your system administrator for further information."
-msgstr "Contatta l'amministratore di sistema per maggiori informazioni."
-
#: templates/socialaccount/login.html:13
#, python-format
msgid "Connect %(provider)s"
@@ -15141,27 +15452,27 @@ msgstr "Si"
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr "Utenti"
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr "Selezionare quali utenti sono assegnati a questo gruppo"
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "Informazioni personali"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "Permessi"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr "Date Importanti"
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "Impostazione autorizzazioni"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "Gruppo"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "Visualizza"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "Autorizzazione a visualizzare gli articoli"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "Autorizzazione ad aggiungere elementi"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "Modificare"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "Permessi per modificare gli elementi"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "Autorizzazione ad eliminare gli elementi"
diff --git a/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po
index 281ce186ac..759a1893e5 100644
--- a/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/ja/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: ja\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "APIエンドポイントが見つかりません"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "ユーザーにこのモデルを表示する権限がありません"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "値がありません"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr ""
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "数量コードが無効です"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "エラーの詳細は管理者パネルで確認できます"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "日付を入力する"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "メモ"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "値 '{name}' はパターン形式で表示されません"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "指定された値が必要なパターンと一致しません: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "指定されたプライマリEメールアドレスは無効です。"
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "指定されたメールドメインは承認されていません。"
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "数量コードが無効です"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "シリアル番号は空です"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "シリアル番号が見つかりません"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "この値からHTMLタグを削除"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "接続エラー"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "サーバは無効なステータスコードで応答しました"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "例外が発生しました"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "サーバーが無効なContent-Length値で応答しました"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "画像サイズが大きすぎます"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "画像のダウンロードが最大サイズを超えました"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "リモートサーバーが空のレスポンスを返しました"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "指定されたURLは有効な画像ファイルではありません"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "チェコ語"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "ドイツ語"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "ギリシャ語"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "英語"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "スペイン語"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "スペイン語(メキシコ)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "フランス語"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "ヘブライ語"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "ヒンディー語"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "ハンガリー語"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "イタリア語"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "日本語"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "韓国語"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr ""
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "オランダ語"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "ノルウェー語"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "ポーランド語"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "ポルトガル語"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "ポルトガル語 (ブラジル)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr ""
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "ロシア語"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr ""
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "スロベニア語"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr ""
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "スウェーデン語"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "タイ語"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "トルコ語"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr ""
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "ベトナム語"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr ""
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "メールアドレス"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "プラグインメタデータ"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "外部プラグインで使用するためのJSONメタデータフィールド"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "無効な選択です"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "お名前"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "説明"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "説明 (オプション)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "マークダウンメモ (オプション)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "バーコード情報"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "サードパーティ製バーコードデータ"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "有効な数字でなければなりません"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "通貨"
msgid "Select currency from available options"
msgstr "利用可能なオプションから通貨を選択してください"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "このユーザのロールを変更する権限がありません"
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "無効な値です。"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "データファイル"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "アップロードするファイルを選択"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "サポートされていないファイル形式"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "ファイルサイズが大きすぎます"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "ファイルに列が見つかりません"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "ファイルにデータ行がみつかりません"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "データが入力されていません"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "データ列が指定されていません"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "必須の列がありません: {name}"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "{col} 列が重複しています。"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "外部画像ファイルのURL"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "外部URLからの画像ダウンロードは許可されていません"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "バックグラウンドワーカーのチェックに失敗しました"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "メールアドレスが未設定です"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "InvenTree システムのヘルスチェックに失敗しました"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "ユーザー情報を編集"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "パスワードを設定"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "パスワードが一致しません"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "パスワードが間違っています"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "システム情報"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "InvenTree について"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "オプション"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "アセンブリ"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "パーツ"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "組立注文"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "組立注文"
msgid "Build Orders"
msgstr "組立注文"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "パーツ"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "組立状況"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "作成日時"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "外部リンク"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "外部 サイト へのリンク"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "組立優先度"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "数量"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "在庫商品"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "シリアル番号"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "ステータス"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "組立ライン"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "シリアル番号"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "追跡可能"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "処理待ち"
@@ -1722,21 +1750,21 @@ msgstr "処理待ち"
msgid "Production"
msgstr "生産"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "キャンセル済"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "完了"
@@ -1744,165 +1772,162 @@ msgstr "完了"
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "組立を編集"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "組立をキャンセル"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "組立を削除"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr "注文必須パーツ"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "パーツの注文"
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "ファイル"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr "外部URLからの画像ダウンロードを許可する"
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "外部URL画像の最大サイズ"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "テンプレート"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "パーツはデフォルトのテンプレートです"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "コンポーネント"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "パーツはデフォルトでサブコンポーネントとして使用できます"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "購入可能"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "パーツはデフォルトで購入可能です"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "販売可能"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "パーツはデフォルトで販売可能です"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "パーツはデフォルトで追跡可能です"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "デバッグモード"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "シリアル番号を自動入力"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "メールアドレスは必須です"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr "非アクティブな部品を非表示"
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr "購読中の部品を表示"
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
-msgstr "購読中のカテゴリを表示"
-
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
-msgstr ""
+#: common/models.py:2279
+msgid "Hide inactive parts"
+msgstr "非アクティブな部品を非表示"
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
-msgstr ""
+msgid "Show subscribed parts"
+msgstr "購読中の部品を表示"
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
-msgstr ""
+msgid "Show subscribed categories"
+msgstr "購読中のカテゴリを表示"
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "ユーザー"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "メッセージ ID:"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "リンク"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "添付ファイル"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "ファイルがありません"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "外部リンクが見つかりません。"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "添付ファイルを選択"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "コメント:"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "ファイル名"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "連絡先メールアドレス"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "メーカー・パーツ"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "製造元"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "仕入先"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "顧客"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "メーカー"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "パーツの注文"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "メーカー・パーツの編集"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "メーカー・パーツを削除"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "内部パーツ"
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "在庫商品"
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "設置済"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "外部ページへのリンク"
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "購入金額"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "発送済み"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "割り当てるシリアル番号を入力"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "紛失"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "返品済"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "処理中"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "キーワード"
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr "カテゴリID"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "カテゴリ名"
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "カテゴリ"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "パーツカテゴリ"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "パーツカテゴリ"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "パーツカテゴリ"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr "カテゴリを選択"
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "バックグラウンドワーカーのチェックに失敗しました"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "このパーツの通知を受け取る"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "シリアル番号で検索"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "在庫"
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "アクションが指定されていません"
msgid "No matching action found"
msgstr "一致するアクションが見つかりませんでした"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "シリアル番号が既に存在します"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr "シリアル番号が大きすぎます"
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr "期限切れ"
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "シリアル番号が既に存在します"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr "パーツは販売可能でなければなりません"
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "却下済み"
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "在庫商品を作成しました"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "在庫商品編集済み"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "割り当てられたシリアル番号"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "在庫数"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "手動在庫追加が完了しました"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "手動在庫削除が完了しました"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "ロケーションが変更されました"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "アセンブリへインストールしました"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "アセンブリから削除しました"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "インストール済みのコンポーネント項目"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "コンポーネント項目を削除しました"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "親アイテムから分割する"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "子項目を分割"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "商品在庫をマージしました"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "組立注文の出力が作成されました"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "組立注文の出力が完了しました"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "顧客に送信されました"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "顧客からの返品"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "組立"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr "このパーツを表示するには、次のリンクをクリックしてください"
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr "最小在庫"
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr "個人情報"
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr "許可"
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr "重要な日付"
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr "パーミッション設定"
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr "グループ"
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr "表示"
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr "項目を表示する権限"
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr "項目を追加する権限"
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr "変更"
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr "項目を編集する権限"
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr "項目を削除する権限"
diff --git a/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po
index 5a9af447b3..7ba98025a0 100644
--- a/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/ko/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: ko\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr ""
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr ""
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr ""
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr ""
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr ""
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr ""
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr ""
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr ""
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr ""
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr ""
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr ""
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr ""
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr ""
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr ""
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr ""
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr ""
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
+msgid "Invalid group: {group}"
msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr ""
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr ""
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr ""
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr ""
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr ""
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr ""
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr ""
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr ""
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr ""
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr ""
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr ""
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr ""
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr ""
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr ""
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr ""
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr ""
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr ""
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr ""
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr ""
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr ""
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr ""
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr ""
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr ""
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr ""
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
-
-#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/locales.py:39
-msgid "Norwegian"
+msgid "Lithuanian"
msgstr ""
#: InvenTree/locales.py:40
-msgid "Polish"
+msgid "Latvian"
msgstr ""
#: InvenTree/locales.py:41
-msgid "Portuguese"
+msgid "Dutch"
msgstr ""
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
+msgid "Norwegian"
msgstr ""
#: InvenTree/locales.py:43
-msgid "Romanian"
+msgid "Polish"
msgstr ""
#: InvenTree/locales.py:44
-msgid "Russian"
+msgid "Portuguese"
msgstr ""
#: InvenTree/locales.py:45
-msgid "Slovak"
+msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/locales.py:46
-msgid "Slovenian"
+msgid "Romanian"
msgstr ""
#: InvenTree/locales.py:47
-msgid "Serbian"
+msgid "Russian"
msgstr ""
#: InvenTree/locales.py:48
-msgid "Swedish"
+msgid "Slovak"
msgstr ""
#: InvenTree/locales.py:49
-msgid "Thai"
+msgid "Slovenian"
msgstr ""
#: InvenTree/locales.py:50
-msgid "Turkish"
+msgid "Serbian"
msgstr ""
#: InvenTree/locales.py:51
-msgid "Ukrainian"
+msgid "Swedish"
msgstr ""
#: InvenTree/locales.py:52
-msgid "Vietnamese"
+msgid "Thai"
msgstr ""
#: InvenTree/locales.py:53
-msgid "Chinese (Simplified)"
+msgid "Turkish"
msgstr ""
#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/lt/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/lt/LC_MESSAGES/django.po
new file mode 100644
index 0000000000..5ef3ecfa35
--- /dev/null
+++ b/src/backend/InvenTree/locale/lt/LC_MESSAGES/django.po
@@ -0,0 +1,15550 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: inventree\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
+"Last-Translator: \n"
+"Language-Team: Lithuanian\n"
+"Language: lt_LT\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && (n%100>19 || n%100<11) ? 0 : (n%10>=2 && n%10<=9) && (n%100>19 || n%100<11) ? 1 : n%1!=0 ? 2: 3);\n"
+"X-Crowdin-Project: inventree\n"
+"X-Crowdin-Project-ID: 452300\n"
+"X-Crowdin-Language: lt\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
+
+#: InvenTree/api.py:270
+msgid "API endpoint not found"
+msgstr ""
+
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
+msgid "User does not have permission to view this model"
+msgstr ""
+
+#: InvenTree/conversion.py:161
+#, python-brace-format
+msgid "Invalid unit provided ({unit})"
+msgstr ""
+
+#: InvenTree/conversion.py:178
+msgid "No value provided"
+msgstr ""
+
+#: InvenTree/conversion.py:205
+#, python-brace-format
+msgid "Could not convert {original} to {unit}"
+msgstr ""
+
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr ""
+
+#: InvenTree/exceptions.py:104
+msgid "Error details can be found in the admin panel"
+msgstr ""
+
+#: InvenTree/fields.py:135
+msgid "Enter date"
+msgstr ""
+
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
+#: company/templates/company/manufacturer_part_sidebar.html:11
+#: company/templates/company/sidebar.html:37
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
+#: order/templates/order/po_sidebar.html:11
+#: order/templates/order/return_order_sidebar.html:9
+#: order/templates/order/so_sidebar.html:17 part/admin.py:59
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
+#: report/templates/report/inventree_build_order_report.html:172
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
+#: stock/templates/stock/stock_sidebar.html:25
+#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
+#: templates/js/translated/part.js:1087
+#: templates/js/translated/purchase_order.js:2254
+#: templates/js/translated/return_order.js:774
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
+msgid "Notes"
+msgstr ""
+
+#: InvenTree/format.py:162
+#, python-brace-format
+msgid "Value '{name}' does not appear in pattern format"
+msgstr ""
+
+#: InvenTree/format.py:173
+msgid "Provided value does not match required pattern: "
+msgstr ""
+
+#: InvenTree/forms.py:129
+msgid "Enter password"
+msgstr ""
+
+#: InvenTree/forms.py:130
+msgid "Enter new password"
+msgstr ""
+
+#: InvenTree/forms.py:139
+msgid "Confirm password"
+msgstr ""
+
+#: InvenTree/forms.py:140
+msgid "Confirm new password"
+msgstr ""
+
+#: InvenTree/forms.py:144
+msgid "Old password"
+msgstr ""
+
+#: InvenTree/forms.py:183
+msgid "Email (again)"
+msgstr ""
+
+#: InvenTree/forms.py:187
+msgid "Email address confirmation"
+msgstr ""
+
+#: InvenTree/forms.py:210
+msgid "You must type the same email each time."
+msgstr ""
+
+#: InvenTree/forms.py:221
+msgid "MFA Registration is disabled."
+msgstr ""
+
+#: InvenTree/forms.py:259 InvenTree/forms.py:267
+msgid "The provided primary email address is not valid."
+msgstr ""
+
+#: InvenTree/forms.py:273
+msgid "The provided email domain is not approved."
+msgstr ""
+
+#: InvenTree/forms.py:402
+msgid "Registration is disabled."
+msgstr ""
+
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
+
+#: InvenTree/helpers.py:515
+msgid "Empty serial number string"
+msgstr ""
+
+#: InvenTree/helpers.py:544
+msgid "Duplicate serial"
+msgstr ""
+
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
+#, python-brace-format
+msgid "Invalid group: {group}"
+msgstr ""
+
+#: InvenTree/helpers.py:607
+#, python-brace-format
+msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
+msgstr ""
+
+#: InvenTree/helpers.py:673
+msgid "No serial numbers found"
+msgstr ""
+
+#: InvenTree/helpers.py:678
+msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
+msgstr ""
+
+#: InvenTree/helpers.py:796
+msgid "Remove HTML tags from this value"
+msgstr ""
+
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
+msgid "Connection error"
+msgstr ""
+
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
+msgid "Server responded with invalid status code"
+msgstr ""
+
+#: InvenTree/helpers_model.py:138
+msgid "Exception occurred"
+msgstr ""
+
+#: InvenTree/helpers_model.py:148
+msgid "Server responded with invalid Content-Length value"
+msgstr ""
+
+#: InvenTree/helpers_model.py:151
+msgid "Image size is too large"
+msgstr ""
+
+#: InvenTree/helpers_model.py:163
+msgid "Image download exceeded maximum size"
+msgstr ""
+
+#: InvenTree/helpers_model.py:168
+msgid "Remote server returned empty response"
+msgstr ""
+
+#: InvenTree/helpers_model.py:176
+msgid "Supplied URL is not a valid image file"
+msgstr ""
+
+#: InvenTree/locales.py:20
+msgid "Arabic"
+msgstr ""
+
+#: InvenTree/locales.py:21
+msgid "Bulgarian"
+msgstr ""
+
+#: InvenTree/locales.py:22
+msgid "Czech"
+msgstr ""
+
+#: InvenTree/locales.py:23
+msgid "Danish"
+msgstr ""
+
+#: InvenTree/locales.py:24
+msgid "German"
+msgstr ""
+
+#: InvenTree/locales.py:25
+msgid "Greek"
+msgstr ""
+
+#: InvenTree/locales.py:26
+msgid "English"
+msgstr ""
+
+#: InvenTree/locales.py:27
+msgid "Spanish"
+msgstr ""
+
+#: InvenTree/locales.py:28
+msgid "Spanish (Mexican)"
+msgstr ""
+
+#: InvenTree/locales.py:29
+msgid "Estonian"
+msgstr ""
+
+#: InvenTree/locales.py:30
+msgid "Farsi / Persian"
+msgstr ""
+
+#: InvenTree/locales.py:31
+msgid "Finnish"
+msgstr ""
+
+#: InvenTree/locales.py:32
+msgid "French"
+msgstr ""
+
+#: InvenTree/locales.py:33
+msgid "Hebrew"
+msgstr ""
+
+#: InvenTree/locales.py:34
+msgid "Hindi"
+msgstr ""
+
+#: InvenTree/locales.py:35
+msgid "Hungarian"
+msgstr ""
+
+#: InvenTree/locales.py:36
+msgid "Italian"
+msgstr ""
+
+#: InvenTree/locales.py:37
+msgid "Japanese"
+msgstr ""
+
+#: InvenTree/locales.py:38
+msgid "Korean"
+msgstr ""
+
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
+msgid "Latvian"
+msgstr ""
+
+#: InvenTree/locales.py:41
+msgid "Dutch"
+msgstr ""
+
+#: InvenTree/locales.py:42
+msgid "Norwegian"
+msgstr ""
+
+#: InvenTree/locales.py:43
+msgid "Polish"
+msgstr ""
+
+#: InvenTree/locales.py:44
+msgid "Portuguese"
+msgstr ""
+
+#: InvenTree/locales.py:45
+msgid "Portuguese (Brazilian)"
+msgstr ""
+
+#: InvenTree/locales.py:46
+msgid "Romanian"
+msgstr ""
+
+#: InvenTree/locales.py:47
+msgid "Russian"
+msgstr ""
+
+#: InvenTree/locales.py:48
+msgid "Slovak"
+msgstr ""
+
+#: InvenTree/locales.py:49
+msgid "Slovenian"
+msgstr ""
+
+#: InvenTree/locales.py:50
+msgid "Serbian"
+msgstr ""
+
+#: InvenTree/locales.py:51
+msgid "Swedish"
+msgstr ""
+
+#: InvenTree/locales.py:52
+msgid "Thai"
+msgstr ""
+
+#: InvenTree/locales.py:53
+msgid "Turkish"
+msgstr ""
+
+#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
+msgid "Chinese (Traditional)"
+msgstr ""
+
+#: InvenTree/magic_login.py:28
+msgid "Log in to the app"
+msgstr ""
+
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
+#: templates/InvenTree/settings/user.html:49
+#: templates/js/translated/company.js:678
+msgid "Email"
+msgstr ""
+
+#: InvenTree/models.py:105
+msgid "Error running plugin validation"
+msgstr ""
+
+#: InvenTree/models.py:174
+msgid "Metadata must be a python dict object"
+msgstr ""
+
+#: InvenTree/models.py:180
+msgid "Plugin Metadata"
+msgstr ""
+
+#: InvenTree/models.py:181
+msgid "JSON metadata field, for use by external plugins"
+msgstr ""
+
+#: InvenTree/models.py:408
+msgid "Improperly formatted pattern"
+msgstr ""
+
+#: InvenTree/models.py:415
+msgid "Unknown format key specified"
+msgstr ""
+
+#: InvenTree/models.py:421
+msgid "Missing required format key"
+msgstr ""
+
+#: InvenTree/models.py:432
+msgid "Reference field cannot be empty"
+msgstr ""
+
+#: InvenTree/models.py:440
+msgid "Reference must match required pattern"
+msgstr ""
+
+#: InvenTree/models.py:471
+msgid "Reference number is too large"
+msgstr ""
+
+#: InvenTree/models.py:722
+msgid "Duplicate names cannot exist under the same parent"
+msgstr ""
+
+#: InvenTree/models.py:739
+msgid "Invalid choice"
+msgstr ""
+
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
+#: templates/InvenTree/settings/mixins/urls.html:13
+#: templates/InvenTree/settings/notifications.html:17
+#: templates/InvenTree/settings/plugin.html:83
+#: templates/InvenTree/settings/plugin_settings.html:22
+#: templates/InvenTree/settings/settings_staff_js.html:67
+#: templates/InvenTree/settings/settings_staff_js.html:454
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
+#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
+msgid "Name"
+msgstr ""
+
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
+#: company/templates/company/company_base.html:77
+#: company/templates/company/manufacturer_part.html:75
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
+#: part/templates/part/part_scheduling.html:12 report/models.py:155
+#: report/models.py:517 report/models.py:543
+#: report/templates/report/inventree_build_order_report.html:117
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
+#: templates/InvenTree/settings/notifications.html:19
+#: templates/InvenTree/settings/plugin_settings.html:27
+#: templates/InvenTree/settings/settings_staff_js.html:170
+#: templates/InvenTree/settings/settings_staff_js.html:459
+#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
+#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
+#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
+#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
+#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
+#: templates/js/translated/plugin.js:80
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
+#: templates/js/translated/return_order.js:313
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
+msgid "Description"
+msgstr ""
+
+#: InvenTree/models.py:776 stock/models.py:90
+msgid "Description (optional)"
+msgstr ""
+
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
+msgid "Path"
+msgstr ""
+
+#: InvenTree/models.py:928
+msgid "Markdown notes (optional)"
+msgstr ""
+
+#: InvenTree/models.py:959
+msgid "Barcode Data"
+msgstr ""
+
+#: InvenTree/models.py:960
+msgid "Third party barcode data"
+msgstr ""
+
+#: InvenTree/models.py:966
+msgid "Barcode Hash"
+msgstr ""
+
+#: InvenTree/models.py:967
+msgid "Unique hash of barcode data"
+msgstr ""
+
+#: InvenTree/models.py:1034
+msgid "Existing barcode found"
+msgstr ""
+
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
+msgid "Server Error"
+msgstr ""
+
+#: InvenTree/models.py:1143
+msgid "An error has been logged by the server."
+msgstr ""
+
+#: InvenTree/serializers.py:63 part/models.py:4444
+msgid "Must be a valid number"
+msgstr ""
+
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
+#: templates/InvenTree/settings/settings_staff_js.html:44
+#: templates/currency_data.html:5
+msgid "Currency"
+msgstr ""
+
+#: InvenTree/serializers.py:103
+msgid "Select currency from available options"
+msgstr ""
+
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
+msgid "Username"
+msgstr ""
+
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
+msgid "First Name"
+msgstr ""
+
+#: InvenTree/serializers.py:408
+msgid "First name of the user"
+msgstr ""
+
+#: InvenTree/serializers.py:412 templates/InvenTree/settings/user.html:41
+msgid "Last Name"
+msgstr ""
+
+#: InvenTree/serializers.py:412
+msgid "Last name of the user"
+msgstr ""
+
+#: InvenTree/serializers.py:416
+msgid "Email address of the user"
+msgstr ""
+
+#: InvenTree/serializers.py:441
+msgid "Staff"
+msgstr ""
+
+#: InvenTree/serializers.py:441
+msgid "Does this user have staff permissions"
+msgstr ""
+
+#: InvenTree/serializers.py:445
+msgid "Superuser"
+msgstr ""
+
+#: InvenTree/serializers.py:445
+msgid "Is this user a superuser"
+msgstr ""
+
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
+#: templates/js/translated/table_filters.js:134
+#: templates/js/translated/table_filters.js:226
+#: templates/js/translated/table_filters.js:513
+#: templates/js/translated/table_filters.js:541
+#: templates/js/translated/table_filters.js:719
+#: templates/js/translated/table_filters.js:808 users/models.py:182
+msgid "Active"
+msgstr ""
+
+#: InvenTree/serializers.py:449
+msgid "Is this user account active"
+msgstr ""
+
+#: InvenTree/serializers.py:467
+msgid "You do not have permission to change this user role."
+msgstr ""
+
+#: InvenTree/serializers.py:503
+msgid "Only superusers can create new users"
+msgstr ""
+
+#: InvenTree/serializers.py:523
+msgid "Your account has been created."
+msgstr ""
+
+#: InvenTree/serializers.py:525
+msgid "Please use the password reset function to login"
+msgstr ""
+
+#: InvenTree/serializers.py:531
+msgid "Welcome to InvenTree"
+msgstr ""
+
+#: InvenTree/serializers.py:594
+msgid "Invalid value"
+msgstr ""
+
+#: InvenTree/serializers.py:614 importer/models.py:64
+msgid "Data File"
+msgstr ""
+
+#: InvenTree/serializers.py:615
+msgid "Select data file for upload"
+msgstr ""
+
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
+
+#: InvenTree/serializers.py:638
+msgid "File is too large"
+msgstr ""
+
+#: InvenTree/serializers.py:659
+msgid "No columns found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:662
+msgid "No data rows found in file"
+msgstr ""
+
+#: InvenTree/serializers.py:774
+msgid "No data rows provided"
+msgstr ""
+
+#: InvenTree/serializers.py:777
+msgid "No data columns supplied"
+msgstr ""
+
+#: InvenTree/serializers.py:843
+#, python-brace-format
+msgid "Missing required column: '{name}'"
+msgstr ""
+
+#: InvenTree/serializers.py:852
+#, python-brace-format
+msgid "Duplicate column: '{col}'"
+msgstr ""
+
+#: InvenTree/serializers.py:891
+msgid "Remote Image"
+msgstr ""
+
+#: InvenTree/serializers.py:892
+msgid "URL of remote image file"
+msgstr ""
+
+#: InvenTree/serializers.py:910
+msgid "Downloading images from remote URL is not enabled"
+msgstr ""
+
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
+
+#: InvenTree/templatetags/inventree_extras.py:184
+msgid "Unknown database"
+msgstr ""
+
+#: InvenTree/validators.py:32
+msgid "Invalid physical unit"
+msgstr ""
+
+#: InvenTree/validators.py:38
+msgid "Not a valid currency code"
+msgstr ""
+
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
+msgid "Overage value must not be negative"
+msgstr ""
+
+#: InvenTree/validators.py:133
+msgid "Overage must not exceed 100%"
+msgstr ""
+
+#: InvenTree/validators.py:139
+msgid "Invalid value for overage"
+msgstr ""
+
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
+msgid "Edit User Information"
+msgstr ""
+
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
+msgid "Set Password"
+msgstr ""
+
+#: InvenTree/views.py:433
+msgid "Password fields must match"
+msgstr ""
+
+#: InvenTree/views.py:441
+msgid "Wrong password provided"
+msgstr ""
+
+#: InvenTree/views.py:645 templates/navbar.html:160
+msgid "System Information"
+msgstr ""
+
+#: InvenTree/views.py:652 templates/navbar.html:171
+msgid "About InvenTree"
+msgstr ""
+
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
+#: build/templates/build/detail.html:87
+msgid "Parent Build"
+msgstr ""
+
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
+#: templates/js/translated/table_filters.js:549
+#: templates/js/translated/table_filters.js:633
+#: templates/js/translated/table_filters.js:674
+msgid "Assigned to me"
+msgstr ""
+
+#: build/api.py:129 build/templates/build/build_base.html:206
+#: build/templates/build/detail.html:115
+#: report/templates/report/inventree_build_order_report.html:152
+#: templates/js/translated/table_filters.js:552
+msgid "Issued By"
+msgstr ""
+
+#: build/api.py:148
+msgid "Assigned To"
+msgstr ""
+
+#: build/api.py:310
+msgid "Build must be cancelled before it can be deleted"
+msgstr ""
+
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
+#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
+#: templates/js/translated/build.js:2711
+#: templates/js/translated/table_filters.js:197
+#: templates/js/translated/table_filters.js:586
+msgid "Consumable"
+msgstr ""
+
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
+#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
+#: templates/js/translated/table_filters.js:193
+#: templates/js/translated/table_filters.js:222
+#: templates/js/translated/table_filters.js:590
+msgid "Optional"
+msgstr ""
+
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
+#: templates/js/translated/bom.js:1639
+#: templates/js/translated/table_filters.js:337
+#: templates/js/translated/table_filters.js:729
+msgid "Assembly"
+msgstr ""
+
+#: build/api.py:357 templates/js/translated/table_filters.js:415
+#: templates/js/translated/table_filters.js:582
+msgid "Tracked"
+msgstr ""
+
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
+#: templates/js/translated/table_filters.js:146
+#: templates/js/translated/table_filters.js:779
+msgid "Testable"
+msgstr ""
+
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/table_filters.js:574
+msgid "Allocated"
+msgstr ""
+
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2770
+#: templates/js/translated/index.js:123
+#: templates/js/translated/model_renderers.js:238
+#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
+#: templates/js/translated/part.js:702
+#: templates/js/translated/table_filters.js:347
+#: templates/js/translated/table_filters.js:578
+msgid "Available"
+msgstr ""
+
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
+#: report/templates/report/inventree_build_order_report.html:105
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
+#: templates/email/overdue_build_order.html:15
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
+msgid "Build Order"
+msgstr ""
+
+#: build/models.py:89 build/templates/build/build_base.html:14
+#: build/templates/build/index.html:8 build/templates/build/index.html:12
+#: order/templates/order/sales_order_detail.html:111
+#: order/templates/order/so_sidebar.html:13
+#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196
+#: templates/InvenTree/search.html:141
+#: templates/InvenTree/settings/sidebar.html:55
+#: templates/js/translated/search.js:186 users/models.py:207
+msgid "Build Orders"
+msgstr ""
+
+#: build/models.py:136
+msgid "Assembly BOM has not been validated"
+msgstr ""
+
+#: build/models.py:143
+msgid "Build order cannot be created for an inactive part"
+msgstr ""
+
+#: build/models.py:150
+msgid "Build order cannot be created for an unlocked part"
+msgstr ""
+
+#: build/models.py:164
+msgid "Invalid choice for parent build"
+msgstr ""
+
+#: build/models.py:175 order/models.py:236
+msgid "Responsible user or group must be specified"
+msgstr ""
+
+#: build/models.py:181
+msgid "Build order part cannot be changed"
+msgstr ""
+
+#: build/models.py:242
+msgid "Build Order Reference"
+msgstr ""
+
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
+#: report/templates/report/inventree_bill_of_materials_report.html:139
+#: report/templates/report/inventree_purchase_order_report.html:28
+#: report/templates/report/inventree_return_order_report.html:26
+#: report/templates/report/inventree_sales_order_report.html:28
+#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
+#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
+#: templates/js/translated/purchase_order.js:2119
+#: templates/js/translated/return_order.js:727
+#: templates/js/translated/sales_order.js:1835
+msgid "Reference"
+msgstr ""
+
+#: build/models.py:254
+msgid "Brief description of the build (optional)"
+msgstr ""
+
+#: build/models.py:263
+msgid "BuildOrder to which this build is allocated"
+msgstr ""
+
+#: build/models.py:274
+msgid "Select part to build"
+msgstr ""
+
+#: build/models.py:279
+msgid "Sales Order Reference"
+msgstr ""
+
+#: build/models.py:283
+msgid "SalesOrder to which this build is allocated"
+msgstr ""
+
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
+msgid "Source Location"
+msgstr ""
+
+#: build/models.py:292
+msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
+msgstr ""
+
+#: build/models.py:297
+msgid "Destination Location"
+msgstr ""
+
+#: build/models.py:301
+msgid "Select location where the completed items will be stored"
+msgstr ""
+
+#: build/models.py:305
+msgid "Build Quantity"
+msgstr ""
+
+#: build/models.py:308
+msgid "Number of stock items to build"
+msgstr ""
+
+#: build/models.py:312
+msgid "Completed items"
+msgstr ""
+
+#: build/models.py:314
+msgid "Number of stock items which have been completed"
+msgstr ""
+
+#: build/models.py:318
+msgid "Build Status"
+msgstr ""
+
+#: build/models.py:322
+msgid "Build status code"
+msgstr ""
+
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
+#: templates/js/translated/stock.js:1199
+msgid "Batch Code"
+msgstr ""
+
+#: build/models.py:335 build/serializers.py:350
+msgid "Batch code for this build output"
+msgstr ""
+
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
+#: templates/js/translated/return_order.js:338
+#: templates/js/translated/sales_order.js:822
+msgid "Creation Date"
+msgstr ""
+
+#: build/models.py:342
+msgid "Target completion date"
+msgstr ""
+
+#: build/models.py:343
+msgid "Target date for build completion. Build will be overdue after this date."
+msgstr ""
+
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
+msgid "Completion Date"
+msgstr ""
+
+#: build/models.py:352
+msgid "completed by"
+msgstr ""
+
+#: build/models.py:360 templates/js/translated/build.js:2382
+msgid "Issued by"
+msgstr ""
+
+#: build/models.py:361
+msgid "User who issued this build order"
+msgstr ""
+
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
+#: report/templates/report/inventree_build_order_report.html:158
+#: templates/InvenTree/settings/settings_staff_js.html:150
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
+#: templates/js/translated/return_order.js:358
+#: templates/js/translated/table_filters.js:551
+msgid "Responsible"
+msgstr ""
+
+#: build/models.py:370
+msgid "User or group responsible for this build order"
+msgstr ""
+
+#: build/models.py:375 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:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
+msgid "External Link"
+msgstr ""
+
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
+msgid "Link to external URL"
+msgstr ""
+
+#: build/models.py:380
+msgid "Build Priority"
+msgstr ""
+
+#: build/models.py:383
+msgid "Priority of this build order"
+msgstr ""
+
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
+#: templates/InvenTree/settings/settings_staff_js.html:146
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
+#: templates/js/translated/return_order.js:317
+#: templates/js/translated/sales_order.js:801
+#: templates/js/translated/table_filters.js:47
+#: templates/project_code_data.html:6
+msgid "Project Code"
+msgstr ""
+
+#: build/models.py:391
+msgid "Project code for this build order"
+msgstr ""
+
+#: build/models.py:651 build/models.py:779
+msgid "Failed to offload task to complete build allocations"
+msgstr ""
+
+#: build/models.py:673
+#, python-brace-format
+msgid "Build order {build} has been completed"
+msgstr ""
+
+#: build/models.py:679
+msgid "A build order has been completed"
+msgstr ""
+
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
+msgid "No build output specified"
+msgstr ""
+
+#: build/models.py:972
+msgid "Build output is already completed"
+msgstr ""
+
+#: build/models.py:975
+msgid "Build output does not match Build Order"
+msgstr ""
+
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
+msgid "Quantity must be greater than zero"
+msgstr ""
+
+#: build/models.py:1067 build/serializers.py:287
+msgid "Quantity cannot be greater than the output quantity"
+msgstr ""
+
+#: build/models.py:1127 build/serializers.py:607
+#, python-brace-format
+msgid "Build output {serial} has not passed all required tests"
+msgstr ""
+
+#: build/models.py:1482
+msgid "Build Order Line Item"
+msgstr ""
+
+#: build/models.py:1507
+msgid "Build object"
+msgstr ""
+
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
+#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
+#: part/templates/part/upload_bom.html:53
+#: report/templates/report/inventree_bill_of_materials_report.html:138
+#: report/templates/report/inventree_build_order_report.html:113
+#: report/templates/report/inventree_purchase_order_report.html:29
+#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
+#: report/templates/report/inventree_stock_location_report.html:104
+#: report/templates/report/inventree_test_report.html:90
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
+#: templates/email/build_order_completed.html:18
+#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
+#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
+#: 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:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
+#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
+msgid "Quantity"
+msgstr ""
+
+#: build/models.py:1522
+msgid "Required quantity for build order"
+msgstr ""
+
+#: build/models.py:1602
+msgid "Build item must specify a build output, as master part is marked as trackable"
+msgstr ""
+
+#: build/models.py:1611
+#, python-brace-format
+msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
+msgstr ""
+
+#: build/models.py:1628 order/models.py:2025
+msgid "Stock item is over-allocated"
+msgstr ""
+
+#: build/models.py:1634 order/models.py:2028
+msgid "Allocation quantity must be greater than zero"
+msgstr ""
+
+#: build/models.py:1640
+msgid "Quantity must be 1 for serialized stock"
+msgstr ""
+
+#: build/models.py:1699
+msgid "Selected stock item does not match BOM line"
+msgstr ""
+
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
+#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
+#: templates/js/translated/stock.js:3062
+msgid "Stock Item"
+msgstr ""
+
+#: build/models.py:1775
+msgid "Source stock item"
+msgstr ""
+
+#: build/models.py:1788
+msgid "Stock quantity to allocate to build"
+msgstr ""
+
+#: build/models.py:1796
+msgid "Install into"
+msgstr ""
+
+#: build/models.py:1797
+msgid "Destination stock item"
+msgstr ""
+
+#: build/serializers.py:108
+msgid "Build Level"
+msgstr ""
+
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
+msgid "Part Name"
+msgstr ""
+
+#: build/serializers.py:128
+msgid "Project Code Label"
+msgstr ""
+
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
+msgid "Build Output"
+msgstr ""
+
+#: build/serializers.py:231
+msgid "Build output does not match the parent build"
+msgstr ""
+
+#: build/serializers.py:235
+msgid "Output part does not match BuildOrder part"
+msgstr ""
+
+#: build/serializers.py:239
+msgid "This build output has already been completed"
+msgstr ""
+
+#: build/serializers.py:250
+msgid "This build output is not fully allocated"
+msgstr ""
+
+#: build/serializers.py:270 build/serializers.py:317
+msgid "Enter quantity for build output"
+msgstr ""
+
+#: build/serializers.py:338
+msgid "Integer quantity required for trackable parts"
+msgstr ""
+
+#: build/serializers.py:341
+msgid "Integer quantity required, as the bill of materials contains trackable parts"
+msgstr ""
+
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
+#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
+msgid "Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:357
+msgid "Enter serial numbers for build outputs"
+msgstr ""
+
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
+#: templates/js/translated/barcode.js:578
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
+#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
+msgid "Location"
+msgstr ""
+
+#: build/serializers.py:363
+msgid "Stock location for build output"
+msgstr ""
+
+#: build/serializers.py:377
+msgid "Auto Allocate Serial Numbers"
+msgstr ""
+
+#: build/serializers.py:378
+msgid "Automatically allocate required items with matching serial numbers"
+msgstr ""
+
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
+msgid "The following serial numbers already exist or are invalid"
+msgstr ""
+
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
+msgid "A list of build outputs must be provided"
+msgstr ""
+
+#: build/serializers.py:501
+msgid "Stock location for scrapped outputs"
+msgstr ""
+
+#: build/serializers.py:507
+msgid "Discard Allocations"
+msgstr ""
+
+#: build/serializers.py:508
+msgid "Discard any stock allocations for scrapped outputs"
+msgstr ""
+
+#: build/serializers.py:513
+msgid "Reason for scrapping build output(s)"
+msgstr ""
+
+#: build/serializers.py:573
+msgid "Location for completed build outputs"
+msgstr ""
+
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
+#: templates/js/translated/return_order.js:330
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
+msgid "Status"
+msgstr ""
+
+#: build/serializers.py:585
+msgid "Accept Incomplete Allocation"
+msgstr ""
+
+#: build/serializers.py:586
+msgid "Complete outputs if stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:698
+msgid "Consume Allocated Stock"
+msgstr ""
+
+#: build/serializers.py:699
+msgid "Consume any stock which has already been allocated to this build"
+msgstr ""
+
+#: build/serializers.py:705
+msgid "Remove Incomplete Outputs"
+msgstr ""
+
+#: build/serializers.py:706
+msgid "Delete any build outputs which have not been completed"
+msgstr ""
+
+#: build/serializers.py:733
+msgid "Not permitted"
+msgstr ""
+
+#: build/serializers.py:734
+msgid "Accept as consumed by this build order"
+msgstr ""
+
+#: build/serializers.py:735
+msgid "Deallocate before completing this build order"
+msgstr ""
+
+#: build/serializers.py:765
+msgid "Overallocated Stock"
+msgstr ""
+
+#: build/serializers.py:767
+msgid "How do you want to handle extra stock items assigned to the build order"
+msgstr ""
+
+#: build/serializers.py:777
+msgid "Some stock items have been overallocated"
+msgstr ""
+
+#: build/serializers.py:782
+msgid "Accept Unallocated"
+msgstr ""
+
+#: build/serializers.py:783
+msgid "Accept that stock items have not been fully allocated to this build order"
+msgstr ""
+
+#: build/serializers.py:793 templates/js/translated/build.js:319
+msgid "Required stock has not been fully allocated"
+msgstr ""
+
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
+msgid "Accept Incomplete"
+msgstr ""
+
+#: build/serializers.py:799
+msgid "Accept that the required number of build outputs have not been completed"
+msgstr ""
+
+#: build/serializers.py:809 templates/js/translated/build.js:323
+msgid "Required build quantity has not been completed"
+msgstr ""
+
+#: build/serializers.py:818
+msgid "Build order has open child build orders"
+msgstr ""
+
+#: build/serializers.py:821
+msgid "Build order must be in production state"
+msgstr ""
+
+#: build/serializers.py:824 templates/js/translated/build.js:307
+msgid "Build order has incomplete outputs"
+msgstr ""
+
+#: build/serializers.py:862
+msgid "Build Line"
+msgstr ""
+
+#: build/serializers.py:872
+msgid "Build output"
+msgstr ""
+
+#: build/serializers.py:880
+msgid "Build output must point to the same build"
+msgstr ""
+
+#: build/serializers.py:916
+msgid "Build Line Item"
+msgstr ""
+
+#: build/serializers.py:930
+msgid "bom_item.part must point to the same part as the build order"
+msgstr ""
+
+#: build/serializers.py:945 stock/serializers.py:1325
+msgid "Item must be in stock"
+msgstr ""
+
+#: build/serializers.py:993 order/serializers.py:1477
+#, python-brace-format
+msgid "Available quantity ({q}) exceeded"
+msgstr ""
+
+#: build/serializers.py:999
+msgid "Build output must be specified for allocation of tracked parts"
+msgstr ""
+
+#: build/serializers.py:1006
+msgid "Build output cannot be specified for allocation of untracked parts"
+msgstr ""
+
+#: build/serializers.py:1030 order/serializers.py:1750
+msgid "Allocation items must be provided"
+msgstr ""
+
+#: build/serializers.py:1093
+msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
+msgstr ""
+
+#: build/serializers.py:1101
+msgid "Exclude Location"
+msgstr ""
+
+#: build/serializers.py:1102
+msgid "Exclude stock items from this selected location"
+msgstr ""
+
+#: build/serializers.py:1107
+msgid "Interchangeable Stock"
+msgstr ""
+
+#: build/serializers.py:1108
+msgid "Stock items in multiple locations can be used interchangeably"
+msgstr ""
+
+#: build/serializers.py:1113
+msgid "Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1114
+msgid "Allow allocation of substitute parts"
+msgstr ""
+
+#: build/serializers.py:1119
+msgid "Optional Items"
+msgstr ""
+
+#: build/serializers.py:1120
+msgid "Allocate optional BOM items to build order"
+msgstr ""
+
+#: build/serializers.py:1143
+msgid "Failed to start auto-allocation task"
+msgstr ""
+
+#: build/serializers.py:1226 stock/serializers.py:585
+msgid "Supplier Part Number"
+msgstr ""
+
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
+msgid "Manufacturer Part Number"
+msgstr ""
+
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
+msgid "Location Name"
+msgstr ""
+
+#: build/serializers.py:1229 build/serializers.py:1327
+msgid "Build Reference"
+msgstr ""
+
+#: build/serializers.py:1230
+msgid "BOM Reference"
+msgstr ""
+
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
+#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
+#: templates/js/translated/stock.js:2510
+msgid "Packaging"
+msgstr ""
+
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
+msgid "Part ID"
+msgstr ""
+
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
+msgid "Part IPN"
+msgstr ""
+
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
+#: part/stocktake.py:220
+msgid "Part Description"
+msgstr ""
+
+#: build/serializers.py:1240
+msgid "BOM Part ID"
+msgstr ""
+
+#: build/serializers.py:1241
+msgid "BOM Part Name"
+msgstr ""
+
+#: build/serializers.py:1244
+#: report/templates/report/inventree_return_order_report.html:25
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
+#: templates/js/translated/return_order.js:539
+#: templates/js/translated/return_order.js:722
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
+#: templates/js/translated/stock.js:602
+msgid "Serial Number"
+msgstr ""
+
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
+msgid "Allocated Quantity"
+msgstr ""
+
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
+msgid "Available Quantity"
+msgstr ""
+
+#: build/serializers.py:1335
+msgid "Part Category ID"
+msgstr ""
+
+#: build/serializers.py:1336
+msgid "Part Category Name"
+msgstr ""
+
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
+#: templates/js/translated/table_filters.js:230
+#: templates/js/translated/table_filters.js:783
+msgid "Trackable"
+msgstr ""
+
+#: build/serializers.py:1346
+msgid "Inherited"
+msgstr ""
+
+#: build/serializers.py:1347 part/models.py:4370
+#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
+#: templates/js/translated/build.js:2720
+msgid "Allow Variants"
+msgstr ""
+
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
+#: stock/api.py:794
+msgid "BOM Item"
+msgstr ""
+
+#: build/serializers.py:1370 build/templates/build/detail.html:236
+#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
+msgid "Allocated Stock"
+msgstr ""
+
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
+#: templates/js/translated/part.js:2155
+#: templates/js/translated/table_filters.js:177
+msgid "On Order"
+msgstr ""
+
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
+#: templates/js/translated/table_filters.js:367
+msgid "In Production"
+msgstr ""
+
+#: build/serializers.py:1384 part/serializers.py:958
+msgid "External Stock"
+msgstr ""
+
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
+#: templates/js/translated/table_filters.js:601
+msgid "Pending"
+msgstr ""
+
+#: build/status_codes.py:12
+msgid "Production"
+msgstr ""
+
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
+msgid "On Hold"
+msgstr ""
+
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
+msgid "Cancelled"
+msgstr ""
+
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
+msgid "Complete"
+msgstr ""
+
+#: build/tasks.py:184
+msgid "Stock required for build order"
+msgstr ""
+
+#: build/tasks.py:260
+msgid "Overdue Build Order"
+msgstr ""
+
+#: build/tasks.py:265
+#, python-brace-format
+msgid "Build order {bo} is now overdue"
+msgstr ""
+
+#: build/templates/build/build_base.html:19
+msgid "Part thumbnail"
+msgstr ""
+
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
+#: templates/js/translated/filters.js:338
+msgid "Barcode actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
+msgid "Show QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
+#: templates/js/translated/barcode.js:527
+#: templates/js/translated/barcode.js:532
+msgid "Unlink Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
+msgid "Link Barcode"
+msgstr ""
+
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
+msgid "Print actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:61
+msgid "Print build order report"
+msgstr ""
+
+#: build/templates/build/build_base.html:68
+msgid "Build actions"
+msgstr ""
+
+#: build/templates/build/build_base.html:72
+msgid "Edit Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:74
+msgid "Duplicate Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:77
+msgid "Hold Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:80
+msgid "Cancel Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:83
+msgid "Delete Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
+msgid "Issue Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
+msgid "Complete Build"
+msgstr ""
+
+#: build/templates/build/build_base.html:116
+msgid "Build Description"
+msgstr ""
+
+#: build/templates/build/build_base.html:126
+msgid "No build outputs have been created for this build order"
+msgstr ""
+
+#: build/templates/build/build_base.html:133
+msgid "Build Order is ready to mark as completed"
+msgstr ""
+
+#: build/templates/build/build_base.html:138
+msgid "Build Order cannot be completed as outstanding outputs remain"
+msgstr ""
+
+#: build/templates/build/build_base.html:143
+msgid "Required build quantity has not yet been completed"
+msgstr ""
+
+#: build/templates/build/build_base.html:148
+msgid "Stock has not been fully allocated to this Build Order"
+msgstr ""
+
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
+#: report/templates/report/inventree_build_order_report.html:125
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
+#: templates/js/translated/return_order.js:346
+#: templates/js/translated/return_order.js:749
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
+msgid "Target Date"
+msgstr ""
+
+#: build/templates/build/build_base.html:174
+#, python-format
+msgid "This build was due on %(target)s"
+msgstr ""
+
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
+#: templates/js/translated/table_filters.js:97
+#: templates/js/translated/table_filters.js:545
+#: templates/js/translated/table_filters.js:629
+#: templates/js/translated/table_filters.js:670
+msgid "Overdue"
+msgstr ""
+
+#: build/templates/build/build_base.html:186
+#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
+msgid "Completed Outputs"
+msgstr ""
+
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
+#: report/templates/report/inventree_build_order_report.html:135
+#: report/templates/report/inventree_sales_order_report.html:14
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
+#: templates/email/overdue_sales_order.html:15
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
+msgid "Sales Order"
+msgstr ""
+
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
+msgid "Priority"
+msgstr ""
+
+#: build/templates/build/build_base.html:268
+msgid "Issue Build Order"
+msgstr ""
+
+#: build/templates/build/build_base.html:272
+msgid "Issue this Build Order?"
+msgstr ""
+
+#: build/templates/build/build_base.html:303
+msgid "Delete Build Order"
+msgstr ""
+
+#: build/templates/build/build_base.html:313
+msgid "Build Order QR Code"
+msgstr ""
+
+#: build/templates/build/build_base.html:325
+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:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
+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
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
+#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
+#: templates/js/translated/table_filters.js:320
+#: templates/js/translated/table_filters.js:411
+msgid "Batch"
+msgstr ""
+
+#: build/templates/build/detail.html:133
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
+msgid "Created"
+msgstr ""
+
+#: build/templates/build/detail.html:144
+msgid "No target date set"
+msgstr ""
+
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
+#: templates/js/translated/table_filters.js:692
+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:21
+msgid "Child Build Orders"
+msgstr ""
+
+#: build/templates/build/detail.html:177
+msgid "Build Order Line Items"
+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
+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:778
+msgid "Order Parts"
+msgstr ""
+
+#: build/templates/build/detail.html:205
+msgid "Available stock has been filtered based on specified source location for this build order"
+msgstr ""
+
+#: build/templates/build/detail.html:215
+msgid "Incomplete Build Outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:219
+msgid "Create new build output"
+msgstr ""
+
+#: build/templates/build/detail.html:220
+msgid "New Build Output"
+msgstr ""
+
+#: build/templates/build/detail.html:249 build/templates/build/sidebar.html:19
+msgid "Consumed Stock"
+msgstr ""
+
+#: build/templates/build/detail.html:261
+msgid "Completed Build Outputs"
+msgstr ""
+
+#: build/templates/build/detail.html:273
+msgid "Build test statistics"
+msgstr ""
+
+#: build/templates/build/detail.html:288 build/templates/build/sidebar.html:27
+#: 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:233
+#: part/templates/part/part_sidebar.html:63 stock/templates/stock/item.html:110
+#: stock/templates/stock/stock_sidebar.html:23
+msgid "Attachments"
+msgstr ""
+
+#: build/templates/build/detail.html:303
+msgid "Build Notes"
+msgstr ""
+
+#: build/templates/build/detail.html:458
+msgid "Allocation Complete"
+msgstr ""
+
+#: build/templates/build/detail.html:459
+msgid "All lines have been fully allocated"
+msgstr ""
+
+#: build/templates/build/index.html:18 part/templates/part/detail.html:335
+msgid "New Build Order"
+msgstr ""
+
+#: build/templates/build/sidebar.html:5
+msgid "Build Order Details"
+msgstr ""
+
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
+#: order/templates/order/po_sidebar.html:5
+#: order/templates/order/return_order_detail.html:18
+#: order/templates/order/so_sidebar.html:5
+#: report/templates/report/inventree_purchase_order_report.html:22
+#: report/templates/report/inventree_return_order_report.html:19
+#: report/templates/report/inventree_sales_order_report.html:22
+msgid "Line Items"
+msgstr ""
+
+#: build/templates/build/sidebar.html:10
+msgid "Incomplete Outputs"
+msgstr ""
+
+#: build/templates/build/sidebar.html:24
+#: part/templates/part/part_sidebar.html:56
+msgid "Test Statistics"
+msgstr ""
+
+#: common/api.py:725
+msgid "Is Link"
+msgstr ""
+
+#: common/api.py:733
+msgid "Is File"
+msgstr ""
+
+#: common/api.py:776
+msgid "User does not have permission to delete these attachments"
+msgstr ""
+
+#: common/api.py:793
+msgid "User does not have permission to delete this attachment"
+msgstr ""
+
+#: common/currency.py:134
+msgid "Invalid currency code"
+msgstr ""
+
+#: common/currency.py:136
+msgid "Duplicate currency code"
+msgstr ""
+
+#: common/currency.py:141
+msgid "No valid currency codes provided"
+msgstr ""
+
+#: common/currency.py:158
+msgid "No plugin"
+msgstr ""
+
+#: common/files.py:65
+msgid "Error reading file (invalid encoding)"
+msgstr ""
+
+#: common/files.py:70
+msgid "Error reading file (invalid format)"
+msgstr ""
+
+#: common/files.py:72
+msgid "Error reading file (incorrect dimension)"
+msgstr ""
+
+#: common/files.py:74
+msgid "Error reading file (data could be corrupted)"
+msgstr ""
+
+#: common/forms.py:12 common/forms.py:25
+msgid "File"
+msgstr ""
+
+#: common/forms.py:12 common/forms.py:26
+msgid "Select file to upload"
+msgstr ""
+
+#: common/models.py:89
+msgid "Updated"
+msgstr ""
+
+#: common/models.py:90
+msgid "Timestamp of last update"
+msgstr ""
+
+#: common/models.py:123
+msgid "Site URL is locked by configuration"
+msgstr ""
+
+#: common/models.py:153
+msgid "Unique project code"
+msgstr ""
+
+#: common/models.py:160
+msgid "Project description"
+msgstr ""
+
+#: common/models.py:169
+msgid "User or group responsible for this project"
+msgstr ""
+
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
+
+#: common/models.py:787
+msgid "Settings value"
+msgstr ""
+
+#: common/models.py:842
+msgid "Chosen value is not a valid option"
+msgstr ""
+
+#: common/models.py:858
+msgid "Value must be a boolean value"
+msgstr ""
+
+#: common/models.py:866
+msgid "Value must be an integer value"
+msgstr ""
+
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
+msgid "Key string must be unique"
+msgstr ""
+
+#: common/models.py:1189
+msgid "No group"
+msgstr ""
+
+#: common/models.py:1288
+msgid "Restart required"
+msgstr ""
+
+#: common/models.py:1290
+msgid "A setting has been changed which requires a server restart"
+msgstr ""
+
+#: common/models.py:1297
+msgid "Pending migrations"
+msgstr ""
+
+#: common/models.py:1298
+msgid "Number of pending database migrations"
+msgstr ""
+
+#: common/models.py:1303
+msgid "Server Instance Name"
+msgstr ""
+
+#: common/models.py:1305
+msgid "String descriptor for the server instance"
+msgstr ""
+
+#: common/models.py:1309
+msgid "Use instance name"
+msgstr ""
+
+#: common/models.py:1310
+msgid "Use the instance name in the title-bar"
+msgstr ""
+
+#: common/models.py:1315
+msgid "Restrict showing `about`"
+msgstr ""
+
+#: common/models.py:1316
+msgid "Show the `about` modal only to superusers"
+msgstr ""
+
+#: common/models.py:1321 company/models.py:108 company/models.py:109
+msgid "Company name"
+msgstr ""
+
+#: common/models.py:1322
+msgid "Internal company name"
+msgstr ""
+
+#: common/models.py:1326
+msgid "Base URL"
+msgstr ""
+
+#: common/models.py:1327
+msgid "Base URL for server instance"
+msgstr ""
+
+#: common/models.py:1333
+msgid "Default Currency"
+msgstr ""
+
+#: common/models.py:1334
+msgid "Select base currency for pricing calculations"
+msgstr ""
+
+#: common/models.py:1340
+msgid "Supported Currencies"
+msgstr ""
+
+#: common/models.py:1341
+msgid "List of supported currency codes"
+msgstr ""
+
+#: common/models.py:1347
+msgid "Currency Update Interval"
+msgstr ""
+
+#: common/models.py:1349
+msgid "How often to update exchange rates (set to zero to disable)"
+msgstr ""
+
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
+msgid "days"
+msgstr ""
+
+#: common/models.py:1356
+msgid "Currency Update Plugin"
+msgstr ""
+
+#: common/models.py:1357
+msgid "Currency update plugin to use"
+msgstr ""
+
+#: common/models.py:1362
+msgid "Download from URL"
+msgstr ""
+
+#: common/models.py:1364
+msgid "Allow download of remote images and files from external URL"
+msgstr ""
+
+#: common/models.py:1370
+msgid "Download Size Limit"
+msgstr ""
+
+#: common/models.py:1371
+msgid "Maximum allowable download size for remote image"
+msgstr ""
+
+#: common/models.py:1377
+msgid "User-agent used to download from URL"
+msgstr ""
+
+#: common/models.py:1379
+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:1384
+msgid "Strict URL Validation"
+msgstr ""
+
+#: common/models.py:1385
+msgid "Require schema specification when validating URLs"
+msgstr ""
+
+#: common/models.py:1390
+msgid "Require confirm"
+msgstr ""
+
+#: common/models.py:1391
+msgid "Require explicit user confirmation for certain action."
+msgstr ""
+
+#: common/models.py:1396
+msgid "Tree Depth"
+msgstr ""
+
+#: common/models.py:1398
+msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
+msgstr ""
+
+#: common/models.py:1404
+msgid "Update Check Interval"
+msgstr ""
+
+#: common/models.py:1405
+msgid "How often to check for updates (set to zero to disable)"
+msgstr ""
+
+#: common/models.py:1411
+msgid "Automatic Backup"
+msgstr ""
+
+#: common/models.py:1412
+msgid "Enable automatic backup of database and media files"
+msgstr ""
+
+#: common/models.py:1417
+msgid "Auto Backup Interval"
+msgstr ""
+
+#: common/models.py:1418
+msgid "Specify number of days between automated backup events"
+msgstr ""
+
+#: common/models.py:1424
+msgid "Task Deletion Interval"
+msgstr ""
+
+#: common/models.py:1426
+msgid "Background task results will be deleted after specified number of days"
+msgstr ""
+
+#: common/models.py:1433
+msgid "Error Log Deletion Interval"
+msgstr ""
+
+#: common/models.py:1435
+msgid "Error logs will be deleted after specified number of days"
+msgstr ""
+
+#: common/models.py:1442
+msgid "Notification Deletion Interval"
+msgstr ""
+
+#: common/models.py:1444
+msgid "User notifications will be deleted after specified number of days"
+msgstr ""
+
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
+msgid "Barcode Support"
+msgstr ""
+
+#: common/models.py:1452
+msgid "Enable barcode scanner support in the web interface"
+msgstr ""
+
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
+msgid "Barcode Input Delay"
+msgstr ""
+
+#: common/models.py:1470
+msgid "Barcode input processing delay time"
+msgstr ""
+
+#: common/models.py:1476
+msgid "Barcode Webcam Support"
+msgstr ""
+
+#: common/models.py:1477
+msgid "Allow barcode scanning via webcam in browser"
+msgstr ""
+
+#: common/models.py:1482
+msgid "Barcode Show Data"
+msgstr ""
+
+#: common/models.py:1483
+msgid "Display barcode data in browser as text"
+msgstr ""
+
+#: common/models.py:1488
+msgid "Barcode Generation Plugin"
+msgstr ""
+
+#: common/models.py:1489
+msgid "Plugin to use for internal barcode data generation"
+msgstr ""
+
+#: common/models.py:1494
+msgid "Part Revisions"
+msgstr ""
+
+#: common/models.py:1495
+msgid "Enable revision field for Part"
+msgstr ""
+
+#: common/models.py:1500
+msgid "Assembly Revision Only"
+msgstr ""
+
+#: common/models.py:1501
+msgid "Only allow revisions for assembly parts"
+msgstr ""
+
+#: common/models.py:1506
+msgid "Allow Deletion from Assembly"
+msgstr ""
+
+#: common/models.py:1507
+msgid "Allow deletion of parts which are used in an assembly"
+msgstr ""
+
+#: common/models.py:1512
+msgid "IPN Regex"
+msgstr ""
+
+#: common/models.py:1513
+msgid "Regular expression pattern for matching Part IPN"
+msgstr ""
+
+#: common/models.py:1516
+msgid "Allow Duplicate IPN"
+msgstr ""
+
+#: common/models.py:1517
+msgid "Allow multiple parts to share the same IPN"
+msgstr ""
+
+#: common/models.py:1522
+msgid "Allow Editing IPN"
+msgstr ""
+
+#: common/models.py:1523
+msgid "Allow changing the IPN value while editing a part"
+msgstr ""
+
+#: common/models.py:1528
+msgid "Copy Part BOM Data"
+msgstr ""
+
+#: common/models.py:1529
+msgid "Copy BOM data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:1534
+msgid "Copy Part Parameter Data"
+msgstr ""
+
+#: common/models.py:1535
+msgid "Copy parameter data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:1540
+msgid "Copy Part Test Data"
+msgstr ""
+
+#: common/models.py:1541
+msgid "Copy test data by default when duplicating a part"
+msgstr ""
+
+#: common/models.py:1546
+msgid "Copy Category Parameter Templates"
+msgstr ""
+
+#: common/models.py:1547
+msgid "Copy category parameter templates when creating a part"
+msgstr ""
+
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
+#: templates/js/translated/table_filters.js:138
+#: templates/js/translated/table_filters.js:775
+msgid "Template"
+msgstr ""
+
+#: common/models.py:1553
+msgid "Parts are templates by default"
+msgstr ""
+
+#: common/models.py:1559
+msgid "Parts can be assembled from other components by default"
+msgstr ""
+
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
+msgid "Component"
+msgstr ""
+
+#: common/models.py:1565
+msgid "Parts can be used as sub-components by default"
+msgstr ""
+
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
+msgid "Purchaseable"
+msgstr ""
+
+#: common/models.py:1571
+msgid "Parts are purchaseable by default"
+msgstr ""
+
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
+#: templates/js/translated/table_filters.js:763
+msgid "Salable"
+msgstr ""
+
+#: common/models.py:1577
+msgid "Parts are salable by default"
+msgstr ""
+
+#: common/models.py:1583
+msgid "Parts are trackable by default"
+msgstr ""
+
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
+#: templates/js/translated/table_filters.js:142
+#: templates/js/translated/table_filters.js:787
+msgid "Virtual"
+msgstr ""
+
+#: common/models.py:1589
+msgid "Parts are virtual by default"
+msgstr ""
+
+#: common/models.py:1594
+msgid "Show Import in Views"
+msgstr ""
+
+#: common/models.py:1595
+msgid "Display the import wizard in some part views"
+msgstr ""
+
+#: common/models.py:1600
+msgid "Show related parts"
+msgstr ""
+
+#: common/models.py:1601
+msgid "Display related parts for a part"
+msgstr ""
+
+#: common/models.py:1606
+msgid "Initial Stock Data"
+msgstr ""
+
+#: common/models.py:1607
+msgid "Allow creation of initial stock when adding a new part"
+msgstr ""
+
+#: common/models.py:1612 templates/js/translated/part.js:108
+msgid "Initial Supplier Data"
+msgstr ""
+
+#: common/models.py:1614
+msgid "Allow creation of initial supplier data when adding a new part"
+msgstr ""
+
+#: common/models.py:1620
+msgid "Part Name Display Format"
+msgstr ""
+
+#: common/models.py:1621
+msgid "Format to display the part name"
+msgstr ""
+
+#: common/models.py:1627
+msgid "Part Category Default Icon"
+msgstr ""
+
+#: common/models.py:1628
+msgid "Part category default icon (empty means no icon)"
+msgstr ""
+
+#: common/models.py:1633
+msgid "Enforce Parameter Units"
+msgstr ""
+
+#: common/models.py:1635
+msgid "If units are provided, parameter values must match the specified units"
+msgstr ""
+
+#: common/models.py:1641
+msgid "Minimum Pricing Decimal Places"
+msgstr ""
+
+#: common/models.py:1643
+msgid "Minimum number of decimal places to display when rendering pricing data"
+msgstr ""
+
+#: common/models.py:1654
+msgid "Maximum Pricing Decimal Places"
+msgstr ""
+
+#: common/models.py:1656
+msgid "Maximum number of decimal places to display when rendering pricing data"
+msgstr ""
+
+#: common/models.py:1667
+msgid "Use Supplier Pricing"
+msgstr ""
+
+#: common/models.py:1669
+msgid "Include supplier price breaks in overall pricing calculations"
+msgstr ""
+
+#: common/models.py:1675
+msgid "Purchase History Override"
+msgstr ""
+
+#: common/models.py:1677
+msgid "Historical purchase order pricing overrides supplier price breaks"
+msgstr ""
+
+#: common/models.py:1683
+msgid "Use Stock Item Pricing"
+msgstr ""
+
+#: common/models.py:1685
+msgid "Use pricing from manually entered stock data for pricing calculations"
+msgstr ""
+
+#: common/models.py:1691
+msgid "Stock Item Pricing Age"
+msgstr ""
+
+#: common/models.py:1693
+msgid "Exclude stock items older than this number of days from pricing calculations"
+msgstr ""
+
+#: common/models.py:1700
+msgid "Use Variant Pricing"
+msgstr ""
+
+#: common/models.py:1701
+msgid "Include variant pricing in overall pricing calculations"
+msgstr ""
+
+#: common/models.py:1706
+msgid "Active Variants Only"
+msgstr ""
+
+#: common/models.py:1708
+msgid "Only use active variant parts for calculating variant pricing"
+msgstr ""
+
+#: common/models.py:1714
+msgid "Pricing Rebuild Interval"
+msgstr ""
+
+#: common/models.py:1716
+msgid "Number of days before part pricing is automatically updated"
+msgstr ""
+
+#: common/models.py:1723
+msgid "Internal Prices"
+msgstr ""
+
+#: common/models.py:1724
+msgid "Enable internal prices for parts"
+msgstr ""
+
+#: common/models.py:1729
+msgid "Internal Price Override"
+msgstr ""
+
+#: common/models.py:1731
+msgid "If available, internal prices override price range calculations"
+msgstr ""
+
+#: common/models.py:1737
+msgid "Enable label printing"
+msgstr ""
+
+#: common/models.py:1738
+msgid "Enable label printing from the web interface"
+msgstr ""
+
+#: common/models.py:1743
+msgid "Label Image DPI"
+msgstr ""
+
+#: common/models.py:1745
+msgid "DPI resolution when generating image files to supply to label printing plugins"
+msgstr ""
+
+#: common/models.py:1751
+msgid "Enable Reports"
+msgstr ""
+
+#: common/models.py:1752
+msgid "Enable generation of reports"
+msgstr ""
+
+#: common/models.py:1757 templates/stats.html:25
+msgid "Debug Mode"
+msgstr ""
+
+#: common/models.py:1758
+msgid "Generate reports in debug mode (HTML output)"
+msgstr ""
+
+#: common/models.py:1763
+msgid "Log Report Errors"
+msgstr ""
+
+#: common/models.py:1764
+msgid "Log errors which occur when generating reports"
+msgstr ""
+
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
+msgid "Page Size"
+msgstr ""
+
+#: common/models.py:1770
+msgid "Default page size for PDF reports"
+msgstr ""
+
+#: common/models.py:1775
+msgid "Globally Unique Serials"
+msgstr ""
+
+#: common/models.py:1776
+msgid "Serial numbers for stock items must be globally unique"
+msgstr ""
+
+#: common/models.py:1781
+msgid "Autofill Serial Numbers"
+msgstr ""
+
+#: common/models.py:1782
+msgid "Autofill serial numbers in forms"
+msgstr ""
+
+#: common/models.py:1787
+msgid "Delete Depleted Stock"
+msgstr ""
+
+#: common/models.py:1789
+msgid "Determines default behavior when a stock item is depleted"
+msgstr ""
+
+#: common/models.py:1795
+msgid "Batch Code Template"
+msgstr ""
+
+#: common/models.py:1797
+msgid "Template for generating default batch codes for stock items"
+msgstr ""
+
+#: common/models.py:1802
+msgid "Stock Expiry"
+msgstr ""
+
+#: common/models.py:1803
+msgid "Enable stock expiry functionality"
+msgstr ""
+
+#: common/models.py:1808
+msgid "Sell Expired Stock"
+msgstr ""
+
+#: common/models.py:1809
+msgid "Allow sale of expired stock"
+msgstr ""
+
+#: common/models.py:1814
+msgid "Stock Stale Time"
+msgstr ""
+
+#: common/models.py:1816
+msgid "Number of days stock items are considered stale before expiring"
+msgstr ""
+
+#: common/models.py:1823
+msgid "Build Expired Stock"
+msgstr ""
+
+#: common/models.py:1824
+msgid "Allow building with expired stock"
+msgstr ""
+
+#: common/models.py:1829
+msgid "Stock Ownership Control"
+msgstr ""
+
+#: common/models.py:1830
+msgid "Enable ownership control over stock locations and items"
+msgstr ""
+
+#: common/models.py:1835
+msgid "Stock Location Default Icon"
+msgstr ""
+
+#: common/models.py:1836
+msgid "Stock location default icon (empty means no icon)"
+msgstr ""
+
+#: common/models.py:1841
+msgid "Show Installed Stock Items"
+msgstr ""
+
+#: common/models.py:1842
+msgid "Display installed stock items in stock tables"
+msgstr ""
+
+#: common/models.py:1847
+msgid "Check BOM when installing items"
+msgstr ""
+
+#: common/models.py:1849
+msgid "Installed stock items must exist in the BOM for the parent part"
+msgstr ""
+
+#: common/models.py:1855
+msgid "Allow Out of Stock Transfer"
+msgstr ""
+
+#: common/models.py:1857
+msgid "Allow stock items which are not in stock to be transferred between stock locations"
+msgstr ""
+
+#: common/models.py:1863
+msgid "Build Order Reference Pattern"
+msgstr ""
+
+#: common/models.py:1865
+msgid "Required pattern for generating Build Order reference field"
+msgstr ""
+
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
+msgid "Require Responsible Owner"
+msgstr ""
+
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
+msgid "A responsible owner must be assigned to each order"
+msgstr ""
+
+#: common/models.py:1877
+msgid "Require Active Part"
+msgstr ""
+
+#: common/models.py:1878
+msgid "Prevent build order creation for inactive parts"
+msgstr ""
+
+#: common/models.py:1883
+msgid "Require Locked Part"
+msgstr ""
+
+#: common/models.py:1884
+msgid "Prevent build order creation for unlocked parts"
+msgstr ""
+
+#: common/models.py:1889
+msgid "Require Valid BOM"
+msgstr ""
+
+#: common/models.py:1891
+msgid "Prevent build order creation unless BOM has been validated"
+msgstr ""
+
+#: common/models.py:1897
+msgid "Require Closed Child Orders"
+msgstr ""
+
+#: common/models.py:1899
+msgid "Prevent build order completion until all child orders are closed"
+msgstr ""
+
+#: common/models.py:1905
+msgid "Block Until Tests Pass"
+msgstr ""
+
+#: common/models.py:1907
+msgid "Prevent build outputs from being completed until all required tests pass"
+msgstr ""
+
+#: common/models.py:1913
+msgid "Enable Return Orders"
+msgstr ""
+
+#: common/models.py:1914
+msgid "Enable return order functionality in the user interface"
+msgstr ""
+
+#: common/models.py:1919
+msgid "Return Order Reference Pattern"
+msgstr ""
+
+#: common/models.py:1921
+msgid "Required pattern for generating Return Order reference field"
+msgstr ""
+
+#: common/models.py:1933
+msgid "Edit Completed Return Orders"
+msgstr ""
+
+#: common/models.py:1935
+msgid "Allow editing of return orders after they have been completed"
+msgstr ""
+
+#: common/models.py:1941
+msgid "Sales Order Reference Pattern"
+msgstr ""
+
+#: common/models.py:1943
+msgid "Required pattern for generating Sales Order reference field"
+msgstr ""
+
+#: common/models.py:1955
+msgid "Sales Order Default Shipment"
+msgstr ""
+
+#: common/models.py:1956
+msgid "Enable creation of default shipment with sales orders"
+msgstr ""
+
+#: common/models.py:1961
+msgid "Edit Completed Sales Orders"
+msgstr ""
+
+#: common/models.py:1963
+msgid "Allow editing of sales orders after they have been shipped or completed"
+msgstr ""
+
+#: common/models.py:1969
+msgid "Mark Shipped Orders as Complete"
+msgstr ""
+
+#: common/models.py:1971
+msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
+msgstr ""
+
+#: common/models.py:1977
+msgid "Purchase Order Reference Pattern"
+msgstr ""
+
+#: common/models.py:1979
+msgid "Required pattern for generating Purchase Order reference field"
+msgstr ""
+
+#: common/models.py:1991
+msgid "Edit Completed Purchase Orders"
+msgstr ""
+
+#: common/models.py:1993
+msgid "Allow editing of purchase orders after they have been shipped or completed"
+msgstr ""
+
+#: common/models.py:1999
+msgid "Auto Complete Purchase Orders"
+msgstr ""
+
+#: common/models.py:2001
+msgid "Automatically mark purchase orders as complete when all line items are received"
+msgstr ""
+
+#: common/models.py:2008
+msgid "Enable password forgot"
+msgstr ""
+
+#: common/models.py:2009
+msgid "Enable password forgot function on the login pages"
+msgstr ""
+
+#: common/models.py:2014
+msgid "Enable registration"
+msgstr ""
+
+#: common/models.py:2015
+msgid "Enable self-registration for users on the login pages"
+msgstr ""
+
+#: common/models.py:2020
+msgid "Enable SSO"
+msgstr ""
+
+#: common/models.py:2021
+msgid "Enable SSO on the login pages"
+msgstr ""
+
+#: common/models.py:2026
+msgid "Enable SSO registration"
+msgstr ""
+
+#: common/models.py:2028
+msgid "Enable self-registration via SSO for users on the login pages"
+msgstr ""
+
+#: common/models.py:2034
+msgid "Enable SSO group sync"
+msgstr ""
+
+#: common/models.py:2036
+msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
+msgstr ""
+
+#: common/models.py:2042
+msgid "SSO group key"
+msgstr ""
+
+#: common/models.py:2044
+msgid "The name of the groups claim attribute provided by the IdP"
+msgstr ""
+
+#: common/models.py:2050
+msgid "SSO group map"
+msgstr ""
+
+#: common/models.py:2052
+msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
+msgstr ""
+
+#: common/models.py:2058
+msgid "Remove groups outside of SSO"
+msgstr ""
+
+#: common/models.py:2060
+msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
+msgstr ""
+
+#: common/models.py:2066
+msgid "Email required"
+msgstr ""
+
+#: common/models.py:2067
+msgid "Require user to supply mail on signup"
+msgstr ""
+
+#: common/models.py:2072
+msgid "Auto-fill SSO users"
+msgstr ""
+
+#: common/models.py:2074
+msgid "Automatically fill out user-details from SSO account-data"
+msgstr ""
+
+#: common/models.py:2080
+msgid "Mail twice"
+msgstr ""
+
+#: common/models.py:2081
+msgid "On signup ask users twice for their mail"
+msgstr ""
+
+#: common/models.py:2086
+msgid "Password twice"
+msgstr ""
+
+#: common/models.py:2087
+msgid "On signup ask users twice for their password"
+msgstr ""
+
+#: common/models.py:2092
+msgid "Allowed domains"
+msgstr ""
+
+#: common/models.py:2094
+msgid "Restrict signup to certain domains (comma-separated, starting with @)"
+msgstr ""
+
+#: common/models.py:2100
+msgid "Group on signup"
+msgstr ""
+
+#: common/models.py:2102
+msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
+msgstr ""
+
+#: common/models.py:2108
+msgid "Enforce MFA"
+msgstr ""
+
+#: common/models.py:2109
+msgid "Users must use multifactor security."
+msgstr ""
+
+#: common/models.py:2114
+msgid "Check plugins on startup"
+msgstr ""
+
+#: common/models.py:2116
+msgid "Check that all plugins are installed on startup - enable in container environments"
+msgstr ""
+
+#: common/models.py:2124
+msgid "Check for plugin updates"
+msgstr ""
+
+#: common/models.py:2125
+msgid "Enable periodic checks for updates to installed plugins"
+msgstr ""
+
+#: common/models.py:2131
+msgid "Enable URL integration"
+msgstr ""
+
+#: common/models.py:2132
+msgid "Enable plugins to add URL routes"
+msgstr ""
+
+#: common/models.py:2138
+msgid "Enable navigation integration"
+msgstr ""
+
+#: common/models.py:2139
+msgid "Enable plugins to integrate into navigation"
+msgstr ""
+
+#: common/models.py:2145
+msgid "Enable app integration"
+msgstr ""
+
+#: common/models.py:2146
+msgid "Enable plugins to add apps"
+msgstr ""
+
+#: common/models.py:2152
+msgid "Enable schedule integration"
+msgstr ""
+
+#: common/models.py:2153
+msgid "Enable plugins to run scheduled tasks"
+msgstr ""
+
+#: common/models.py:2159
+msgid "Enable event integration"
+msgstr ""
+
+#: common/models.py:2160
+msgid "Enable plugins to respond to internal events"
+msgstr ""
+
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
+msgid "Enable project codes"
+msgstr ""
+
+#: common/models.py:2174
+msgid "Enable project codes for tracking projects"
+msgstr ""
+
+#: common/models.py:2179
+msgid "Stocktake Functionality"
+msgstr ""
+
+#: common/models.py:2181
+msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
+msgstr ""
+
+#: common/models.py:2187
+msgid "Exclude External Locations"
+msgstr ""
+
+#: common/models.py:2189
+msgid "Exclude stock items in external locations from stocktake calculations"
+msgstr ""
+
+#: common/models.py:2195
+msgid "Automatic Stocktake Period"
+msgstr ""
+
+#: common/models.py:2197
+msgid "Number of days between automatic stocktake recording (set to zero to disable)"
+msgstr ""
+
+#: common/models.py:2203
+msgid "Report Deletion Interval"
+msgstr ""
+
+#: common/models.py:2205
+msgid "Stocktake reports will be deleted after specified number of days"
+msgstr ""
+
+#: common/models.py:2212
+msgid "Display Users full names"
+msgstr ""
+
+#: common/models.py:2213
+msgid "Display Users full names instead of usernames"
+msgstr ""
+
+#: common/models.py:2218
+msgid "Enable Test Station Data"
+msgstr ""
+
+#: common/models.py:2219
+msgid "Enable test station data collection for test results"
+msgstr ""
+
+#: common/models.py:2224
+msgid "Create Template on Upload"
+msgstr ""
+
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
+
+#: common/models.py:2279
+msgid "Hide inactive parts"
+msgstr ""
+
+#: common/models.py:2281
+msgid "Hide inactive parts in results displayed on the homepage"
+msgstr ""
+
+#: common/models.py:2287
+msgid "Show subscribed parts"
+msgstr ""
+
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
+msgstr ""
+
+#: common/models.py:2293
+msgid "Show subscribed categories"
+msgstr ""
+
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
+msgstr ""
+
+#: common/models.py:2299
+msgid "Show latest parts"
+msgstr ""
+
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
+msgstr ""
+
+#: common/models.py:2305
+msgid "Show invalid BOMs"
+msgstr ""
+
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
+msgstr ""
+
+#: common/models.py:2311
+msgid "Show recent stock changes"
+msgstr ""
+
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2317
+msgid "Show low stock"
+msgstr ""
+
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2323
+msgid "Show depleted stock"
+msgstr ""
+
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
+msgstr ""
+
+#: common/models.py:2330
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
+msgstr ""
+
+#: common/models.py:2336
+msgid "Show expired stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2341
+msgid "Show stale stock"
+msgstr ""
+
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2347
+msgid "Show pending builds"
+msgstr ""
+
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
+msgstr ""
+
+#: common/models.py:2353
+msgid "Show overdue builds"
+msgstr ""
+
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
+msgstr ""
+
+#: common/models.py:2359
+msgid "Show outstanding POs"
+msgstr ""
+
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
+msgstr ""
+
+#: common/models.py:2365
+msgid "Show overdue POs"
+msgstr ""
+
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
+msgstr ""
+
+#: common/models.py:2371
+msgid "Show outstanding SOs"
+msgstr ""
+
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
+msgstr ""
+
+#: common/models.py:2377
+msgid "Show overdue SOs"
+msgstr ""
+
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
+msgstr ""
+
+#: common/models.py:2383
+msgid "Show pending SO shipments"
+msgstr ""
+
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
+msgstr ""
+
+#: common/models.py:2390
+msgid "Show news on the homepage"
+msgstr ""
+
+#: common/models.py:2395
+msgid "Inline label display"
+msgstr ""
+
+#: common/models.py:2397
+msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgstr ""
+
+#: common/models.py:2403
+msgid "Default label printer"
+msgstr ""
+
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
+msgstr ""
+
+#: common/models.py:2411
+msgid "Inline report display"
+msgstr ""
+
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
+msgstr ""
+
+#: common/models.py:2419
+msgid "Search Parts"
+msgstr ""
+
+#: common/models.py:2420
+msgid "Display parts in search preview window"
+msgstr ""
+
+#: common/models.py:2425
+msgid "Search Supplier Parts"
+msgstr ""
+
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
+msgstr ""
+
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
+msgstr ""
+
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
+msgstr ""
+
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
+msgstr ""
+
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
+msgstr ""
+
+#: common/models.py:2443
+msgid "Search Categories"
+msgstr ""
+
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
+msgstr ""
+
+#: common/models.py:2450
+msgid "Display stock items in search preview window"
+msgstr ""
+
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
+msgstr ""
+
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
+msgstr ""
+
+#: common/models.py:2464
+msgid "Display stock locations in search preview window"
+msgstr ""
+
+#: common/models.py:2469
+msgid "Search Companies"
+msgstr ""
+
+#: common/models.py:2470
+msgid "Display companies in search preview window"
+msgstr ""
+
+#: common/models.py:2475
+msgid "Search Build Orders"
+msgstr ""
+
+#: common/models.py:2476
+msgid "Display build orders in search preview window"
+msgstr ""
+
+#: common/models.py:2481
+msgid "Search Purchase Orders"
+msgstr ""
+
+#: common/models.py:2482
+msgid "Display purchase orders in search preview window"
+msgstr ""
+
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
+msgstr ""
+
+#: common/models.py:2489
+msgid "Exclude inactive purchase orders from search preview window"
+msgstr ""
+
+#: common/models.py:2495
+msgid "Search Sales Orders"
+msgstr ""
+
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
+msgstr ""
+
+#: common/models.py:2509
+msgid "Search Return Orders"
+msgstr ""
+
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
+msgstr ""
+
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
+msgstr ""
+
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
+msgstr ""
+
+#: common/models.py:2523
+msgid "Search Preview Results"
+msgstr ""
+
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
+msgstr ""
+
+#: common/models.py:2531
+msgid "Regex Search"
+msgstr ""
+
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
+msgstr ""
+
+#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
+msgid "Save the last used printing machines for a user"
+msgstr ""
+
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
+msgid "User"
+msgstr ""
+
+#: common/models.py:2644
+msgid "Price break quantity"
+msgstr ""
+
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
+#: templates/js/translated/pricing.js:621
+#: templates/js/translated/return_order.js:739
+msgid "Price"
+msgstr ""
+
+#: common/models.py:2652
+msgid "Unit price at specified quantity"
+msgstr ""
+
+#: common/models.py:2756 common/models.py:2941
+msgid "Endpoint"
+msgstr ""
+
+#: common/models.py:2757
+msgid "Endpoint at which this webhook is received"
+msgstr ""
+
+#: common/models.py:2767
+msgid "Name for this webhook"
+msgstr ""
+
+#: common/models.py:2771
+msgid "Is this webhook active"
+msgstr ""
+
+#: common/models.py:2787 users/models.py:159
+msgid "Token"
+msgstr ""
+
+#: common/models.py:2788
+msgid "Token for access"
+msgstr ""
+
+#: common/models.py:2796
+msgid "Secret"
+msgstr ""
+
+#: common/models.py:2797
+msgid "Shared secret for HMAC"
+msgstr ""
+
+#: common/models.py:2905
+msgid "Message ID"
+msgstr ""
+
+#: common/models.py:2906
+msgid "Unique identifier for this message"
+msgstr ""
+
+#: common/models.py:2914
+msgid "Host"
+msgstr ""
+
+#: common/models.py:2915
+msgid "Host from which this message was received"
+msgstr ""
+
+#: common/models.py:2923
+msgid "Header"
+msgstr ""
+
+#: common/models.py:2924
+msgid "Header of this message"
+msgstr ""
+
+#: common/models.py:2931
+msgid "Body"
+msgstr ""
+
+#: common/models.py:2932
+msgid "Body of this message"
+msgstr ""
+
+#: common/models.py:2942
+msgid "Endpoint on which this message was received"
+msgstr ""
+
+#: common/models.py:2947
+msgid "Worked on"
+msgstr ""
+
+#: common/models.py:2948
+msgid "Was the work on this message finished?"
+msgstr ""
+
+#: common/models.py:3074
+msgid "Id"
+msgstr ""
+
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
+msgid "Title"
+msgstr ""
+
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
+#: part/templates/part/part_scheduling.html:11
+#: report/templates/report/inventree_build_order_report.html:164
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
+#: templates/js/translated/part.js:2475
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
+#: templates/js/translated/return_order.js:778
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
+msgid "Link"
+msgstr ""
+
+#: common/models.py:3080 templates/js/translated/news.js:60
+msgid "Published"
+msgstr ""
+
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
+#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
+msgid "Author"
+msgstr ""
+
+#: common/models.py:3084 templates/js/translated/news.js:52
+msgid "Summary"
+msgstr ""
+
+#: common/models.py:3087
+msgid "Read"
+msgstr ""
+
+#: common/models.py:3087
+msgid "Was this news item read?"
+msgstr ""
+
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
+#: report/templates/report/inventree_bill_of_materials_report.html:126
+#: report/templates/report/inventree_bill_of_materials_report.html:148
+#: report/templates/report/inventree_return_order_report.html:35
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
+#: templates/hover_image.html:7 templates/hover_image.html:9
+#: templates/modals.html:6
+msgid "Image"
+msgstr ""
+
+#: common/models.py:3104
+msgid "Image file"
+msgstr ""
+
+#: common/models.py:3116 common/models.py:3317
+msgid "Target model type for this image"
+msgstr ""
+
+#: common/models.py:3120
+msgid "Target model ID for this image"
+msgstr ""
+
+#: common/models.py:3142
+msgid "Custom Unit"
+msgstr ""
+
+#: common/models.py:3160
+msgid "Unit symbol must be unique"
+msgstr ""
+
+#: common/models.py:3175
+msgid "Unit name must be a valid identifier"
+msgstr ""
+
+#: common/models.py:3194
+msgid "Unit name"
+msgstr ""
+
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
+msgid "Symbol"
+msgstr ""
+
+#: common/models.py:3202
+msgid "Optional unit symbol"
+msgstr ""
+
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
+msgid "Definition"
+msgstr ""
+
+#: common/models.py:3209
+msgid "Unit definition"
+msgstr ""
+
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
+#: templates/js/translated/attachment.js:345
+msgid "Attachment"
+msgstr ""
+
+#: common/models.py:3279
+msgid "Missing file"
+msgstr ""
+
+#: common/models.py:3280
+msgid "Missing external link"
+msgstr ""
+
+#: common/models.py:3325
+msgid "Select file to attach"
+msgstr ""
+
+#: common/models.py:3340 templates/js/translated/attachment.js:120
+#: templates/js/translated/attachment.js:360
+msgid "Comment"
+msgstr ""
+
+#: common/models.py:3341
+msgid "Attachment comment"
+msgstr ""
+
+#: common/models.py:3357
+msgid "Upload date"
+msgstr ""
+
+#: common/models.py:3358
+msgid "Date the file was uploaded"
+msgstr ""
+
+#: common/models.py:3362
+msgid "File size"
+msgstr ""
+
+#: common/models.py:3362
+msgid "File size in bytes"
+msgstr ""
+
+#: common/models.py:3400 common/serializers.py:609
+msgid "Invalid model type specified for attachment"
+msgstr ""
+
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
+#, python-brace-format
+msgid "New {verbose_name}"
+msgstr ""
+
+#: common/notifications.py:330
+msgid "A new order has been created and assigned to you"
+msgstr ""
+
+#: common/notifications.py:336
+#, python-brace-format
+msgid "{verbose_name} canceled"
+msgstr ""
+
+#: common/notifications.py:338
+msgid "A order that is assigned to you was canceled"
+msgstr ""
+
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
+msgid "Items Received"
+msgstr ""
+
+#: common/notifications.py:346
+msgid "Items have been received against a purchase order"
+msgstr ""
+
+#: common/notifications.py:353
+msgid "Items have been received against a return order"
+msgstr ""
+
+#: common/notifications.py:475
+msgid "Error raised by plugin"
+msgstr ""
+
+#: common/serializers.py:423
+msgid "Is Running"
+msgstr ""
+
+#: common/serializers.py:429
+msgid "Pending Tasks"
+msgstr ""
+
+#: common/serializers.py:435
+msgid "Scheduled Tasks"
+msgstr ""
+
+#: common/serializers.py:441
+msgid "Failed Tasks"
+msgstr ""
+
+#: common/serializers.py:456
+msgid "Task ID"
+msgstr ""
+
+#: common/serializers.py:456
+msgid "Unique task ID"
+msgstr ""
+
+#: common/serializers.py:458
+msgid "Lock"
+msgstr ""
+
+#: common/serializers.py:458
+msgid "Lock time"
+msgstr ""
+
+#: common/serializers.py:460
+msgid "Task name"
+msgstr ""
+
+#: common/serializers.py:462
+msgid "Function"
+msgstr ""
+
+#: common/serializers.py:462
+msgid "Function name"
+msgstr ""
+
+#: common/serializers.py:464
+msgid "Arguments"
+msgstr ""
+
+#: common/serializers.py:464
+msgid "Task arguments"
+msgstr ""
+
+#: common/serializers.py:467
+msgid "Keyword Arguments"
+msgstr ""
+
+#: common/serializers.py:467
+msgid "Task keyword arguments"
+msgstr ""
+
+#: common/serializers.py:577
+msgid "Filename"
+msgstr ""
+
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
+msgid "Model Type"
+msgstr ""
+
+#: common/serializers.py:612
+msgid "User does not have permission to create or edit attachments for this model"
+msgstr ""
+
+#: common/validators.py:35
+msgid "No attachment model type provided"
+msgstr ""
+
+#: common/validators.py:41
+msgid "Invalid attachment model type"
+msgstr ""
+
+#: common/validators.py:82
+msgid "Minimum places cannot be greater than maximum places"
+msgstr ""
+
+#: common/validators.py:94
+msgid "Maximum places cannot be less than minimum places"
+msgstr ""
+
+#: common/validators.py:105
+msgid "An empty domain is not allowed."
+msgstr ""
+
+#: common/validators.py:107
+#, python-brace-format
+msgid "Invalid domain name: {domain}"
+msgstr ""
+
+#: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51
+#: order/templates/order/purchase_order_detail.html:24 order/views.py:118
+#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109
+#: templates/patterns/wizard/upload.html:37
+msgid "Upload File"
+msgstr ""
+
+#: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52
+#: order/views.py:119
+#: part/templates/part/import_wizard/ajax_match_fields.html:45
+#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110
+#: templates/patterns/wizard/match_fields.html:51
+msgid "Match Fields"
+msgstr ""
+
+#: common/views.py:84
+msgid "Match Items"
+msgstr ""
+
+#: common/views.py:397
+msgid "Fields matching failed"
+msgstr ""
+
+#: common/views.py:460
+msgid "Parts imported"
+msgstr ""
+
+#: common/views.py:490 order/templates/order/order_wizard/match_fields.html:27
+#: order/templates/order/order_wizard/match_parts.html:19
+#: order/templates/order/order_wizard/po_upload.html:49
+#: part/templates/part/import_wizard/match_fields.html:27
+#: part/templates/part/import_wizard/match_references.html:19
+#: part/templates/part/import_wizard/part_upload.html:56
+#: templates/patterns/wizard/match_fields.html:26
+#: templates/patterns/wizard/upload.html:35
+msgid "Previous Step"
+msgstr ""
+
+#: company/api.py:141
+msgid "Part is Active"
+msgstr ""
+
+#: company/api.py:145
+msgid "Manufacturer is Active"
+msgstr ""
+
+#: company/api.py:278
+msgid "Supplier Part is Active"
+msgstr ""
+
+#: company/api.py:282
+msgid "Internal Part is Active"
+msgstr ""
+
+#: company/api.py:286
+msgid "Supplier is Active"
+msgstr ""
+
+#: company/models.py:97 company/models.py:368
+#: company/templates/company/company_base.html:8
+#: company/templates/company/company_base.html:12 stock/api.py:812
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
+msgid "Company"
+msgstr ""
+
+#: company/models.py:98 company/views.py:51
+#: templates/js/translated/search.js:192
+msgid "Companies"
+msgstr ""
+
+#: company/models.py:114
+msgid "Company description"
+msgstr ""
+
+#: company/models.py:115
+msgid "Description of the company"
+msgstr ""
+
+#: company/models.py:120 company/templates/company/company_base.html:106
+#: templates/InvenTree/settings/plugin_settings.html:54
+#: templates/js/translated/company.js:533
+msgid "Website"
+msgstr ""
+
+#: company/models.py:120
+msgid "Company website URL"
+msgstr ""
+
+#: company/models.py:125
+msgid "Phone number"
+msgstr ""
+
+#: company/models.py:127
+msgid "Contact phone number"
+msgstr ""
+
+#: company/models.py:134
+msgid "Contact email address"
+msgstr ""
+
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
+msgid "Contact"
+msgstr ""
+
+#: company/models.py:141
+msgid "Point of contact"
+msgstr ""
+
+#: company/models.py:147
+msgid "Link to external company information"
+msgstr ""
+
+#: company/models.py:160
+msgid "Is this company active?"
+msgstr ""
+
+#: company/models.py:165
+msgid "Is customer"
+msgstr ""
+
+#: company/models.py:166
+msgid "Do you sell items to this company?"
+msgstr ""
+
+#: company/models.py:171
+msgid "Is supplier"
+msgstr ""
+
+#: company/models.py:172
+msgid "Do you purchase items from this company?"
+msgstr ""
+
+#: company/models.py:177
+msgid "Is manufacturer"
+msgstr ""
+
+#: company/models.py:178
+msgid "Does this company manufacture parts?"
+msgstr ""
+
+#: company/models.py:186
+msgid "Default currency used for this company"
+msgstr ""
+
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
+msgid "Address"
+msgstr ""
+
+#: company/models.py:312 company/templates/company/sidebar.html:35
+msgid "Addresses"
+msgstr ""
+
+#: company/models.py:369
+msgid "Select company"
+msgstr ""
+
+#: company/models.py:374
+msgid "Address title"
+msgstr ""
+
+#: company/models.py:375
+msgid "Title describing the address entry"
+msgstr ""
+
+#: company/models.py:381
+msgid "Primary address"
+msgstr ""
+
+#: company/models.py:382
+msgid "Set as primary address"
+msgstr ""
+
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
+msgid "Line 1"
+msgstr ""
+
+#: company/models.py:388
+msgid "Address line 1"
+msgstr ""
+
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
+msgid "Line 2"
+msgstr ""
+
+#: company/models.py:395
+msgid "Address line 2"
+msgstr ""
+
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
+msgid "Postal code"
+msgstr ""
+
+#: company/models.py:408
+msgid "City/Region"
+msgstr ""
+
+#: company/models.py:409
+msgid "Postal code city/region"
+msgstr ""
+
+#: company/models.py:415
+msgid "State/Province"
+msgstr ""
+
+#: company/models.py:416
+msgid "State or province"
+msgstr ""
+
+#: company/models.py:422 templates/js/translated/company.js:1002
+msgid "Country"
+msgstr ""
+
+#: company/models.py:423
+msgid "Address country"
+msgstr ""
+
+#: company/models.py:429
+msgid "Courier shipping notes"
+msgstr ""
+
+#: company/models.py:430
+msgid "Notes for shipping courier"
+msgstr ""
+
+#: company/models.py:436
+msgid "Internal shipping notes"
+msgstr ""
+
+#: company/models.py:437
+msgid "Shipping notes for internal use"
+msgstr ""
+
+#: company/models.py:444
+msgid "Link to address information (external)"
+msgstr ""
+
+#: company/models.py:467 company/models.py:584 company/models.py:808
+#: company/templates/company/manufacturer_part.html:7
+#: company/templates/company/manufacturer_part.html:24
+#: stock/templates/stock/item_base.html:214
+msgid "Manufacturer Part"
+msgstr ""
+
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
+#: templates/js/translated/bom.js:622
+msgid "Base Part"
+msgstr ""
+
+#: company/models.py:486 company/models.py:778
+msgid "Select part"
+msgstr ""
+
+#: company/models.py:495 company/templates/company/company_base.html:82
+#: company/templates/company/manufacturer_part.html:90
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
+#: templates/js/translated/table_filters.js:812
+msgid "Manufacturer"
+msgstr ""
+
+#: company/models.py:496
+msgid "Select manufacturer"
+msgstr ""
+
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
+msgid "MPN"
+msgstr ""
+
+#: company/models.py:510
+msgid "URL for external manufacturer part link"
+msgstr ""
+
+#: company/models.py:519
+msgid "Manufacturer part description"
+msgstr ""
+
+#: company/models.py:572
+msgid "Manufacturer Part Parameter"
+msgstr ""
+
+#: company/models.py:591
+msgid "Parameter name"
+msgstr ""
+
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
+#: templates/js/translated/stock.js:1607
+msgid "Value"
+msgstr ""
+
+#: company/models.py:598
+msgid "Parameter value"
+msgstr ""
+
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
+#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
+msgid "Units"
+msgstr ""
+
+#: company/models.py:606
+msgid "Parameter units"
+msgstr ""
+
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
+msgid "Supplier Part"
+msgstr ""
+
+#: company/models.py:716
+msgid "Pack units must be compatible with the base part units"
+msgstr ""
+
+#: company/models.py:723
+msgid "Pack units must be greater than zero"
+msgstr ""
+
+#: company/models.py:737
+msgid "Linked manufacturer part must reference the same base part"
+msgstr ""
+
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
+#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
+#: templates/email/overdue_purchase_order.html:16
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
+#: templates/js/translated/pricing.js:498
+#: templates/js/translated/purchase_order.js:1743
+#: templates/js/translated/table_filters.js:816
+msgid "Supplier"
+msgstr ""
+
+#: company/models.py:787
+msgid "Select supplier"
+msgstr ""
+
+#: company/models.py:793 part/serializers.py:593
+msgid "Supplier stock keeping unit"
+msgstr ""
+
+#: company/models.py:799
+msgid "Is this supplier part active?"
+msgstr ""
+
+#: company/models.py:809
+msgid "Select manufacturer part"
+msgstr ""
+
+#: company/models.py:816
+msgid "URL for external supplier part link"
+msgstr ""
+
+#: company/models.py:825
+msgid "Supplier part description"
+msgstr ""
+
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
+#: part/templates/part/upload_bom.html:59
+#: report/templates/report/inventree_bill_of_materials_report.html:140
+#: report/templates/report/inventree_purchase_order_report.html:32
+#: report/templates/report/inventree_return_order_report.html:27
+#: report/templates/report/inventree_sales_order_report.html:32
+#: report/templates/report/inventree_stock_location_report.html:105
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
+msgid "Note"
+msgstr ""
+
+#: company/models.py:841 part/models.py:2177
+msgid "base cost"
+msgstr ""
+
+#: company/models.py:842 part/models.py:2178
+msgid "Minimum charge (e.g. stocking fee)"
+msgstr ""
+
+#: company/models.py:850
+msgid "Part packaging"
+msgstr ""
+
+#: company/models.py:855 templates/js/translated/company.js:1652
+#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
+msgid "Pack Quantity"
+msgstr ""
+
+#: company/models.py:857
+msgid "Total quantity supplied in a single pack. Leave empty for single items."
+msgstr ""
+
+#: company/models.py:876 part/models.py:2184
+msgid "multiple"
+msgstr ""
+
+#: company/models.py:877
+msgid "Order multiple"
+msgstr ""
+
+#: company/models.py:889
+msgid "Quantity available from supplier"
+msgstr ""
+
+#: company/models.py:895
+msgid "Availability Updated"
+msgstr ""
+
+#: company/models.py:896
+msgid "Date of last update of availability data"
+msgstr ""
+
+#: company/models.py:1024
+msgid "Supplier Price Break"
+msgstr ""
+
+#: company/serializers.py:178
+msgid "Default currency used for this supplier"
+msgstr ""
+
+#: company/serializers.py:214
+msgid "Company Name"
+msgstr ""
+
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
+#: templates/js/translated/table_filters.js:362
+msgid "In Stock"
+msgstr ""
+
+#: company/templates/company/company_base.html:16
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
+#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
+msgid "Inactive"
+msgstr ""
+
+#: company/templates/company/company_base.html:27
+#: templates/js/translated/purchase_order.js:224
+msgid "Create Purchase Order"
+msgstr ""
+
+#: company/templates/company/company_base.html:33
+msgid "Company actions"
+msgstr ""
+
+#: company/templates/company/company_base.html:38
+msgid "Edit company information"
+msgstr ""
+
+#: company/templates/company/company_base.html:39
+#: templates/js/translated/company.js:446
+msgid "Edit Company"
+msgstr ""
+
+#: company/templates/company/company_base.html:43
+msgid "Delete company"
+msgstr ""
+
+#: company/templates/company/company_base.html:44
+#: company/templates/company/company_base.html:168
+msgid "Delete Company"
+msgstr ""
+
+#: company/templates/company/company_base.html:53
+#: company/templates/company/manufacturer_part.html:51
+#: company/templates/company/supplier_part.html:84
+#: part/templates/part/part_thumb.html:20
+#: report/templates/report/inventree_build_order_report.html:98
+#: report/templates/report/inventree_purchase_order_report.html:40
+#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
+#: report/templates/report/inventree_test_report.html:84
+#: report/templates/report/inventree_test_report.html:162
+msgid "Part image"
+msgstr ""
+
+#: company/templates/company/company_base.html:61
+#: part/templates/part/part_thumb.html:12
+msgid "Upload new image"
+msgstr ""
+
+#: company/templates/company/company_base.html:64
+#: part/templates/part/part_thumb.html:14
+msgid "Download image from URL"
+msgstr ""
+
+#: company/templates/company/company_base.html:66
+#: part/templates/part/part_thumb.html:16
+msgid "Delete image"
+msgstr ""
+
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
+#: templates/email/overdue_sales_order.html:16
+#: templates/js/translated/company.js:504
+#: templates/js/translated/return_order.js:295
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
+#: templates/js/translated/table_filters.js:820
+msgid "Customer"
+msgstr ""
+
+#: company/templates/company/company_base.html:117
+msgid "Uses default currency"
+msgstr ""
+
+#: company/templates/company/company_base.html:131
+msgid "Phone"
+msgstr ""
+
+#: company/templates/company/company_base.html:211
+#: part/templates/part/part_base.html:544
+msgid "Remove Image"
+msgstr ""
+
+#: company/templates/company/company_base.html:212
+msgid "Remove associated image from this company"
+msgstr ""
+
+#: company/templates/company/company_base.html:214
+#: part/templates/part/part_base.html:547
+#: templates/InvenTree/settings/user.html:88
+#: templates/InvenTree/settings/user_sso.html:43
+msgid "Remove"
+msgstr ""
+
+#: company/templates/company/company_base.html:243
+#: part/templates/part/part_base.html:576
+msgid "Upload Image"
+msgstr ""
+
+#: company/templates/company/company_base.html:258
+#: part/templates/part/part_base.html:630
+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:372
+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:392
+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:14
+#: order/templates/order/purchase_orders.html:8
+#: order/templates/order/purchase_orders.html:12
+#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
+#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199
+#: templates/InvenTree/settings/sidebar.html:57
+#: templates/js/translated/search.js:205 templates/navbar.html:50
+#: users/models.py:208
+msgid "Purchase Orders"
+msgstr ""
+
+#: company/templates/company/detail.html:79
+#: order/templates/order/purchase_orders.html:17
+msgid "Create new purchase order"
+msgstr ""
+
+#: company/templates/company/detail.html:80
+#: order/templates/order/purchase_orders.html:18
+msgid "New Purchase Order"
+msgstr ""
+
+#: company/templates/company/detail.html:101
+#: company/templates/company/sidebar.html:21
+#: order/templates/order/sales_order_base.html:14
+#: order/templates/order/sales_orders.html:8
+#: order/templates/order/sales_orders.html:15
+#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
+#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219
+#: templates/InvenTree/settings/sidebar.html:59
+#: templates/js/translated/search.js:219 templates/navbar.html:62
+#: users/models.py:209
+msgid "Sales Orders"
+msgstr ""
+
+#: company/templates/company/detail.html:105
+#: order/templates/order/sales_orders.html:20
+msgid "Create new sales order"
+msgstr ""
+
+#: company/templates/company/detail.html:106
+#: order/templates/order/sales_orders.html:21
+msgid "New Sales Order"
+msgstr ""
+
+#: company/templates/company/detail.html:126
+msgid "Assigned Stock"
+msgstr ""
+
+#: company/templates/company/detail.html:142
+#: company/templates/company/sidebar.html:29
+#: order/templates/order/return_order_base.html:14
+#: order/templates/order/return_orders.html:8
+#: order/templates/order/return_orders.html:15
+#: templates/InvenTree/settings/sidebar.html:61
+#: templates/js/translated/search.js:232 templates/navbar.html:65
+#: users/models.py:210
+msgid "Return Orders"
+msgstr ""
+
+#: company/templates/company/detail.html:146
+#: order/templates/order/return_orders.html:20
+msgid "Create new return order"
+msgstr ""
+
+#: company/templates/company/detail.html:147
+#: order/templates/order/return_orders.html:21
+msgid "New Return Order"
+msgstr ""
+
+#: company/templates/company/detail.html:168
+msgid "Company Notes"
+msgstr ""
+
+#: company/templates/company/detail.html:183
+msgid "Company Contacts"
+msgstr ""
+
+#: company/templates/company/detail.html:187
+#: company/templates/company/detail.html:188
+msgid "Add Contact"
+msgstr ""
+
+#: company/templates/company/detail.html:206
+msgid "Company addresses"
+msgstr ""
+
+#: company/templates/company/detail.html:210
+#: company/templates/company/detail.html:211
+msgid "Add Address"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:15 company/views.py:37
+#: templates/InvenTree/search.html:180 templates/navbar.html:49
+msgid "Manufacturers"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:35
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
+msgid "Order part"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:39
+#: templates/js/translated/company.js:1344
+msgid "Edit manufacturer part"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:43
+#: templates/js/translated/company.js:1345
+msgid "Delete manufacturer part"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:65
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
+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:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
+#: 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:211 part/templates/part/part_sidebar.html:8
+msgid "Parameters"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:160
+#: part/templates/part/detail.html:216
+#: templates/InvenTree/settings/category.html:12
+#: templates/InvenTree/settings/part_parameters.html:24
+msgid "New Parameter"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:177
+msgid "Manufacturer Part Notes"
+msgstr ""
+
+#: company/templates/company/manufacturer_part.html:225
+#: templates/js/translated/part.js:1429
+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/supplier_part.html:51
+#: templates/js/translated/company.js:1527
+msgid "Supplier part actions"
+msgstr ""
+
+#: 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:126
+msgid "Order Part"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:61
+#: company/templates/company/supplier_part.html:62
+msgid "Update Availability"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:64
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
+msgid "Edit Supplier Part"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:69
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
+msgid "Duplicate 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 ""
+
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
+msgid "No supplier information available"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
+#: templates/js/translated/pricing.js:510
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
+msgid "SKU"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:207
+msgid "Supplier Part Stock"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
+msgid "Create new stock item"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
+#: templates/js/translated/stock.js:543
+msgid "New Stock Item"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:224
+msgid "Supplier Part Orders"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:247
+msgid "Pricing Information"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
+#: templates/js/translated/pricing.js:684
+msgid "Add Price Break"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:271
+msgid "Supplier Part Notes"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:306
+msgid "Supplier Part QR Code"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:317
+msgid "Link Barcode to Supplier Part"
+msgstr ""
+
+#: company/templates/company/supplier_part.html:389
+msgid "Update Part Availability"
+msgstr ""
+
+#: company/templates/company/supplier_part_sidebar.html:5
+#: part/serializers.py:954 part/stocktake.py:223
+#: part/templates/part/category.html:180
+#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
+#: stock/templates/stock/location_sidebar.html:7
+#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
+#: users/models.py:206
+msgid "Stock Items"
+msgstr ""
+
+#: company/templates/company/supplier_part_sidebar.html:9
+msgid "Supplier Part Pricing"
+msgstr ""
+
+#: company/views.py:32
+msgid "New Supplier"
+msgstr ""
+
+#: company/views.py:38
+msgid "New Manufacturer"
+msgstr ""
+
+#: company/views.py:43 templates/InvenTree/search.html:210
+#: templates/navbar.html:60
+msgid "Customers"
+msgstr ""
+
+#: company/views.py:44
+msgid "New Customer"
+msgstr ""
+
+#: company/views.py:52
+msgid "New Company"
+msgstr ""
+
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
+msgid "Placed"
+msgstr ""
+
+#: importer/mixins.py:261
+msgid "Invalid export format"
+msgstr ""
+
+#: importer/models.py:65
+msgid "Data file to import"
+msgstr ""
+
+#: importer/models.py:74 templates/js/translated/tables.js:558
+msgid "Columns"
+msgstr ""
+
+#: importer/models.py:85
+msgid "Import status"
+msgstr ""
+
+#: importer/models.py:95
+msgid "Field Defaults"
+msgstr ""
+
+#: importer/models.py:102
+msgid "Field Overrides"
+msgstr ""
+
+#: importer/models.py:109
+msgid "Field Filters"
+msgstr ""
+
+#: importer/models.py:239
+msgid "Some required fields have not been mapped"
+msgstr ""
+
+#: importer/models.py:396
+msgid "Column is already mapped to a database field"
+msgstr ""
+
+#: importer/models.py:401
+msgid "Field is already mapped to a data column"
+msgstr ""
+
+#: importer/models.py:410
+msgid "Column mapping must be linked to a valid import session"
+msgstr ""
+
+#: importer/models.py:415
+msgid "Column does not exist in the data file"
+msgstr ""
+
+#: importer/models.py:422
+msgid "Field does not exist in the target model"
+msgstr ""
+
+#: importer/models.py:426
+msgid "Selected field is read-only"
+msgstr ""
+
+#: importer/models.py:431 importer/models.py:502
+msgid "Import Session"
+msgstr ""
+
+#: importer/models.py:435
+msgid "Field"
+msgstr ""
+
+#: importer/models.py:437
+msgid "Column"
+msgstr ""
+
+#: importer/models.py:506
+msgid "Row Index"
+msgstr ""
+
+#: importer/models.py:509
+msgid "Original row data"
+msgstr ""
+
+#: importer/models.py:514 machine/models.py:110
+msgid "Errors"
+msgstr ""
+
+#: importer/models.py:516 part/api.py:857
+msgid "Valid"
+msgstr ""
+
+#: importer/operations.py:28 importer/operations.py:49
+msgid "Unsupported data file format"
+msgstr ""
+
+#: importer/operations.py:40
+msgid "Failed to open data file"
+msgstr ""
+
+#: importer/operations.py:51
+msgid "Invalid data file dimensions"
+msgstr ""
+
+#: importer/serializers.py:91
+msgid "Invalid field defaults"
+msgstr ""
+
+#: importer/serializers.py:104
+msgid "Invalid field overrides"
+msgstr ""
+
+#: importer/serializers.py:117
+msgid "Invalid field filters"
+msgstr ""
+
+#: importer/serializers.py:178
+msgid "Rows"
+msgstr ""
+
+#: importer/serializers.py:179
+msgid "List of row IDs to accept"
+msgstr ""
+
+#: importer/serializers.py:192
+msgid "No rows provided"
+msgstr ""
+
+#: importer/serializers.py:196
+msgid "Row does not belong to this session"
+msgstr ""
+
+#: importer/serializers.py:199
+msgid "Row contains invalid data"
+msgstr ""
+
+#: importer/serializers.py:202
+msgid "Row has already been completed"
+msgstr ""
+
+#: importer/status_codes.py:13
+msgid "Initializing"
+msgstr ""
+
+#: importer/status_codes.py:18
+msgid "Mapping Columns"
+msgstr ""
+
+#: importer/status_codes.py:21
+msgid "Importing Data"
+msgstr ""
+
+#: importer/status_codes.py:24
+msgid "Processing Data"
+msgstr ""
+
+#: importer/validators.py:21
+msgid "Data file exceeds maximum size limit"
+msgstr ""
+
+#: importer/validators.py:26
+msgid "Data file contains no headers"
+msgstr ""
+
+#: importer/validators.py:29
+msgid "Data file contains too many columns"
+msgstr ""
+
+#: importer/validators.py:32
+msgid "Data file contains too many rows"
+msgstr ""
+
+#: importer/validators.py:53
+msgid "Value must be a valid dictionary object"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:216
+msgid "Copies"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:217
+msgid "Number of copies to print for each label"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:232
+msgid "Connected"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
+msgid "Unknown"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:234
+msgid "Printing"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:235
+msgid "No media"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:236
+msgid "Paper jam"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:237
+msgid "Disconnected"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:244
+msgid "Label Printer"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:245
+msgid "Directly print labels for various items."
+msgstr ""
+
+#: machine/machine_types/label_printer.py:251
+msgid "Printer Location"
+msgstr ""
+
+#: machine/machine_types/label_printer.py:252
+msgid "Scope the printer to a specific location"
+msgstr ""
+
+#: machine/models.py:25
+msgid "Name of machine"
+msgstr ""
+
+#: machine/models.py:29
+msgid "Machine Type"
+msgstr ""
+
+#: machine/models.py:29
+msgid "Type of machine"
+msgstr ""
+
+#: machine/models.py:34 machine/models.py:146
+msgid "Driver"
+msgstr ""
+
+#: machine/models.py:35
+msgid "Driver used for the machine"
+msgstr ""
+
+#: machine/models.py:39
+msgid "Machines can be disabled"
+msgstr ""
+
+#: machine/models.py:95
+msgid "Driver available"
+msgstr ""
+
+#: machine/models.py:100
+msgid "No errors"
+msgstr ""
+
+#: machine/models.py:105
+msgid "Initialized"
+msgstr ""
+
+#: machine/models.py:117
+msgid "Machine status"
+msgstr ""
+
+#: machine/models.py:145
+msgid "Machine"
+msgstr ""
+
+#: machine/models.py:151
+msgid "Machine Config"
+msgstr ""
+
+#: machine/models.py:156
+msgid "Config type"
+msgstr ""
+
+#: order/admin.py:30 order/models.py:89
+#: report/templates/report/inventree_purchase_order_report.html:31
+#: report/templates/report/inventree_sales_order_report.html:31
+#: templates/js/translated/order.js:352
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
+msgid "Total Price"
+msgstr ""
+
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
+msgid "Order Status"
+msgstr ""
+
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
+msgid "Order Reference"
+msgstr ""
+
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
+#: templates/js/translated/table_filters.js:625
+#: templates/js/translated/table_filters.js:651
+#: templates/js/translated/table_filters.js:666
+msgid "Outstanding"
+msgstr ""
+
+#: order/api.py:130
+msgid "Has Project Code"
+msgstr ""
+
+#: order/api.py:153 templates/js/translated/table_filters.js:201
+#: templates/js/translated/table_filters.js:791
+msgid "Has Pricing"
+msgstr ""
+
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
+msgid "Order"
+msgstr ""
+
+#: order/api.py:379 order/api.py:809
+msgid "Order Complete"
+msgstr ""
+
+#: order/api.py:430
+msgid "Order Pending"
+msgstr ""
+
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
+#: report/templates/report/inventree_purchase_order_report.html:14
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
+#: templates/email/overdue_purchase_order.html:15
+#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
+msgid "Purchase Order"
+msgstr ""
+
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
+#: report/templates/report/inventree_return_order_report.html:13
+#: templates/js/translated/return_order.js:280
+#: templates/js/translated/stock.js:3026
+msgid "Return Order"
+msgstr ""
+
+#: order/models.py:90
+msgid "Total price for this order"
+msgstr ""
+
+#: order/models.py:95 order/serializers.py:73
+msgid "Order Currency"
+msgstr ""
+
+#: order/models.py:98 order/serializers.py:74
+msgid "Currency for this order (leave blank to use company default)"
+msgstr ""
+
+#: order/models.py:243
+msgid "Contact does not match selected company"
+msgstr ""
+
+#: order/models.py:296
+msgid "Order description (optional)"
+msgstr ""
+
+#: order/models.py:305
+msgid "Select project code for this order"
+msgstr ""
+
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+msgid "Link to external page"
+msgstr ""
+
+#: order/models.py:317
+msgid "Expected date for order delivery. Order will be overdue after this date."
+msgstr ""
+
+#: order/models.py:331
+msgid "Created By"
+msgstr ""
+
+#: order/models.py:339
+msgid "User or group responsible for this order"
+msgstr ""
+
+#: order/models.py:350
+msgid "Point of contact for this order"
+msgstr ""
+
+#: order/models.py:360
+msgid "Company address for this order"
+msgstr ""
+
+#: order/models.py:480 order/models.py:1006
+msgid "Order reference"
+msgstr ""
+
+#: order/models.py:489
+msgid "Purchase order status"
+msgstr ""
+
+#: order/models.py:504
+msgid "Company from which the items are being ordered"
+msgstr ""
+
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
+msgid "Supplier Reference"
+msgstr ""
+
+#: order/models.py:516
+msgid "Supplier order reference code"
+msgstr ""
+
+#: order/models.py:525
+msgid "received by"
+msgstr ""
+
+#: order/models.py:531 order/models.py:2212
+msgid "Issue Date"
+msgstr ""
+
+#: order/models.py:532 order/models.py:2213
+msgid "Date order was issued"
+msgstr ""
+
+#: order/models.py:539 order/models.py:2220
+msgid "Date order was completed"
+msgstr ""
+
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
+msgid "Part supplier must match PO supplier"
+msgstr ""
+
+#: order/models.py:828
+msgid "Quantity must be a positive number"
+msgstr ""
+
+#: order/models.py:1018
+msgid "Company to which the items are being sold"
+msgstr ""
+
+#: order/models.py:1030
+msgid "Sales order status"
+msgstr ""
+
+#: order/models.py:1041 order/models.py:2205
+msgid "Customer Reference "
+msgstr ""
+
+#: order/models.py:1042 order/models.py:2206
+msgid "Customer order reference code"
+msgstr ""
+
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
+msgid "Shipment Date"
+msgstr ""
+
+#: order/models.py:1055
+msgid "shipped by"
+msgstr ""
+
+#: order/models.py:1094
+msgid "Order is already complete"
+msgstr ""
+
+#: order/models.py:1097
+msgid "Order is already cancelled"
+msgstr ""
+
+#: order/models.py:1101
+msgid "Only an open order can be marked as complete"
+msgstr ""
+
+#: order/models.py:1105
+msgid "Order cannot be completed as there are incomplete shipments"
+msgstr ""
+
+#: order/models.py:1110
+msgid "Order cannot be completed as there are incomplete line items"
+msgstr ""
+
+#: order/models.py:1374
+msgid "Item quantity"
+msgstr ""
+
+#: order/models.py:1391
+msgid "Line item reference"
+msgstr ""
+
+#: order/models.py:1398
+msgid "Line item notes"
+msgstr ""
+
+#: order/models.py:1410
+msgid "Target date for this line item (leave blank to use the target date from the order)"
+msgstr ""
+
+#: order/models.py:1431
+msgid "Line item description (optional)"
+msgstr ""
+
+#: order/models.py:1438
+msgid "Additional context for this line"
+msgstr ""
+
+#: order/models.py:1448
+msgid "Unit price"
+msgstr ""
+
+#: order/models.py:1462
+msgid "Purchase Order Line Item"
+msgstr ""
+
+#: order/models.py:1486
+msgid "Supplier part must match supplier"
+msgstr ""
+
+#: order/models.py:1520
+msgid "Supplier part"
+msgstr ""
+
+#: order/models.py:1527 order/templates/order/order_base.html:210
+#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/return_order.js:762
+#: templates/js/translated/table_filters.js:119
+#: templates/js/translated/table_filters.js:605
+msgid "Received"
+msgstr ""
+
+#: order/models.py:1528
+msgid "Number of items received"
+msgstr ""
+
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
+msgid "Purchase Price"
+msgstr ""
+
+#: order/models.py:1537
+msgid "Unit purchase price"
+msgstr ""
+
+#: order/models.py:1603
+msgid "Purchase Order Extra Line"
+msgstr ""
+
+#: order/models.py:1632
+msgid "Sales Order Line Item"
+msgstr ""
+
+#: order/models.py:1653
+msgid "Virtual part cannot be assigned to a sales order"
+msgstr ""
+
+#: order/models.py:1658
+msgid "Only salable parts can be assigned to a sales order"
+msgstr ""
+
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
+msgid "Sale Price"
+msgstr ""
+
+#: order/models.py:1685
+msgid "Unit sale price"
+msgstr ""
+
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
+msgid "Shipped"
+msgstr ""
+
+#: order/models.py:1695
+msgid "Shipped quantity"
+msgstr ""
+
+#: order/models.py:1769
+msgid "Sales Order Shipment"
+msgstr ""
+
+#: order/models.py:1801
+msgid "Date of shipment"
+msgstr ""
+
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
+msgid "Delivery Date"
+msgstr ""
+
+#: order/models.py:1808
+msgid "Date of delivery of shipment"
+msgstr ""
+
+#: order/models.py:1816
+msgid "Checked By"
+msgstr ""
+
+#: order/models.py:1817
+msgid "User who checked this shipment"
+msgstr ""
+
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
+msgid "Shipment"
+msgstr ""
+
+#: order/models.py:1825
+msgid "Shipment number"
+msgstr ""
+
+#: order/models.py:1833
+msgid "Tracking Number"
+msgstr ""
+
+#: order/models.py:1834
+msgid "Shipment tracking information"
+msgstr ""
+
+#: order/models.py:1841
+msgid "Invoice Number"
+msgstr ""
+
+#: order/models.py:1842
+msgid "Reference number for associated invoice"
+msgstr ""
+
+#: order/models.py:1862
+msgid "Shipment has already been sent"
+msgstr ""
+
+#: order/models.py:1865
+msgid "Shipment has no allocated stock items"
+msgstr ""
+
+#: order/models.py:1945
+msgid "Sales Order Extra Line"
+msgstr ""
+
+#: order/models.py:1974
+msgid "Sales Order Allocation"
+msgstr ""
+
+#: order/models.py:1997 order/models.py:1999
+msgid "Stock item has not been assigned"
+msgstr ""
+
+#: order/models.py:2006
+msgid "Cannot allocate stock item to a line with a different part"
+msgstr ""
+
+#: order/models.py:2009
+msgid "Cannot allocate stock to a line without a part"
+msgstr ""
+
+#: order/models.py:2012
+msgid "Allocation quantity cannot exceed stock quantity"
+msgstr ""
+
+#: order/models.py:2031 order/serializers.py:1471
+msgid "Quantity must be 1 for serialized stock item"
+msgstr ""
+
+#: order/models.py:2034
+msgid "Sales order does not match shipment"
+msgstr ""
+
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
+msgid "Shipment does not match sales order"
+msgstr ""
+
+#: order/models.py:2043
+msgid "Line"
+msgstr ""
+
+#: order/models.py:2052
+msgid "Sales order shipment reference"
+msgstr ""
+
+#: order/models.py:2065 order/models.py:2430
+#: templates/js/translated/return_order.js:720
+msgid "Item"
+msgstr ""
+
+#: order/models.py:2066
+msgid "Select stock item to allocate"
+msgstr ""
+
+#: order/models.py:2075
+msgid "Enter stock allocation quantity"
+msgstr ""
+
+#: order/models.py:2175
+msgid "Return Order reference"
+msgstr ""
+
+#: order/models.py:2187
+msgid "Company from which items are being returned"
+msgstr ""
+
+#: order/models.py:2199
+msgid "Return order status"
+msgstr ""
+
+#: order/models.py:2401
+msgid "Return Order Line Item"
+msgstr ""
+
+#: order/models.py:2415
+msgid "Only serialized items can be assigned to a Return Order"
+msgstr ""
+
+#: order/models.py:2431
+msgid "Select item to return from customer"
+msgstr ""
+
+#: order/models.py:2437
+msgid "Received Date"
+msgstr ""
+
+#: order/models.py:2438
+msgid "The date this this return item was received"
+msgstr ""
+
+#: order/models.py:2449 templates/js/translated/return_order.js:731
+#: templates/js/translated/table_filters.js:122
+msgid "Outcome"
+msgstr ""
+
+#: order/models.py:2450
+msgid "Outcome for this line item"
+msgstr ""
+
+#: order/models.py:2457
+msgid "Cost associated with return or repair for this line item"
+msgstr ""
+
+#: order/models.py:2467
+msgid "Return Order Extra Line"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
+msgid "Completed Lines"
+msgstr ""
+
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
+msgid "Supplier Name"
+msgstr ""
+
+#: order/serializers.py:416
+msgid "Order cannot be cancelled"
+msgstr ""
+
+#: order/serializers.py:431 order/serializers.py:1492
+msgid "Allow order to be closed with incomplete line items"
+msgstr ""
+
+#: order/serializers.py:441 order/serializers.py:1502
+msgid "Order has incomplete line items"
+msgstr ""
+
+#: order/serializers.py:591
+msgid "Order is not open"
+msgstr ""
+
+#: order/serializers.py:612
+msgid "Auto Pricing"
+msgstr ""
+
+#: order/serializers.py:614
+msgid "Automatically calculate purchase price based on supplier part data"
+msgstr ""
+
+#: order/serializers.py:624
+msgid "Purchase price currency"
+msgstr ""
+
+#: order/serializers.py:630
+msgid "Merge Items"
+msgstr ""
+
+#: order/serializers.py:632
+msgid "Merge items with the same part, destination and target date into one line item"
+msgstr ""
+
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
+msgid "Internal Part Number"
+msgstr ""
+
+#: order/serializers.py:653
+msgid "Internal Part Name"
+msgstr ""
+
+#: order/serializers.py:669
+msgid "Supplier part must be specified"
+msgstr ""
+
+#: order/serializers.py:672
+msgid "Purchase order must be specified"
+msgstr ""
+
+#: order/serializers.py:680
+msgid "Supplier must match purchase order"
+msgstr ""
+
+#: order/serializers.py:681
+msgid "Purchase order must match supplier"
+msgstr ""
+
+#: order/serializers.py:724 order/serializers.py:1572
+msgid "Line Item"
+msgstr ""
+
+#: order/serializers.py:730
+msgid "Line item does not match purchase order"
+msgstr ""
+
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
+msgid "Select destination location for received items"
+msgstr ""
+
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
+#: templates/js/translated/stock.js:1200
+msgid "Enter batch code for incoming stock items"
+msgstr ""
+
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
+msgid "Enter serial numbers for incoming stock items"
+msgstr ""
+
+#: order/serializers.py:776
+msgid "Override packaging information for incoming stock items"
+msgstr ""
+
+#: order/serializers.py:784
+msgid "Additional note for incoming stock items"
+msgstr ""
+
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
+msgid "Barcode"
+msgstr ""
+
+#: order/serializers.py:792
+msgid "Scanned barcode"
+msgstr ""
+
+#: order/serializers.py:808
+msgid "Barcode is already in use"
+msgstr ""
+
+#: order/serializers.py:831
+msgid "An integer quantity must be provided for trackable parts"
+msgstr ""
+
+#: order/serializers.py:898 order/serializers.py:1950
+msgid "Line items must be provided"
+msgstr ""
+
+#: order/serializers.py:914
+msgid "Destination location must be specified"
+msgstr ""
+
+#: order/serializers.py:925
+msgid "Supplied barcode values must be unique"
+msgstr ""
+
+#: order/serializers.py:1221
+msgid "Sale price currency"
+msgstr ""
+
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
+msgid "No shipment details provided"
+msgstr ""
+
+#: order/serializers.py:1435 order/serializers.py:1581
+msgid "Line item is not associated with this order"
+msgstr ""
+
+#: order/serializers.py:1454
+msgid "Quantity must be positive"
+msgstr ""
+
+#: order/serializers.py:1591
+msgid "Enter serial numbers to allocate"
+msgstr ""
+
+#: order/serializers.py:1613 order/serializers.py:1733
+msgid "Shipment has already been shipped"
+msgstr ""
+
+#: order/serializers.py:1616 order/serializers.py:1736
+msgid "Shipment is not associated with this order"
+msgstr ""
+
+#: order/serializers.py:1671
+msgid "No match found for the following serial numbers"
+msgstr ""
+
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr ""
+
+#: order/serializers.py:1904
+msgid "Return order line item"
+msgstr ""
+
+#: order/serializers.py:1910
+msgid "Line item does not match return order"
+msgstr ""
+
+#: order/serializers.py:1913
+msgid "Line item has already been received"
+msgstr ""
+
+#: order/serializers.py:1942
+msgid "Items can only be received against orders which are in progress"
+msgstr ""
+
+#: order/serializers.py:2025
+msgid "Line price currency"
+msgstr ""
+
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
+msgid "Lost"
+msgstr ""
+
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
+msgid "Returned"
+msgstr ""
+
+#: order/status_codes.py:47 order/status_codes.py:79
+msgid "In Progress"
+msgstr ""
+
+#: order/status_codes.py:105
+msgid "Return"
+msgstr ""
+
+#: order/status_codes.py:108
+msgid "Repair"
+msgstr ""
+
+#: order/status_codes.py:111
+msgid "Replace"
+msgstr ""
+
+#: order/status_codes.py:114
+msgid "Refund"
+msgstr ""
+
+#: order/status_codes.py:117
+msgid "Reject"
+msgstr ""
+
+#: order/tasks.py:30
+msgid "Overdue Purchase Order"
+msgstr ""
+
+#: order/tasks.py:35
+#, python-brace-format
+msgid "Purchase order {po} is now overdue"
+msgstr ""
+
+#: order/tasks.py:80
+msgid "Overdue Sales Order"
+msgstr ""
+
+#: order/tasks.py:85
+#, python-brace-format
+msgid "Sales order {so} is now overdue"
+msgstr ""
+
+#: order/templates/order/order_base.html:52
+msgid "Print purchase order report"
+msgstr ""
+
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
+msgid "Export order to file"
+msgstr ""
+
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
+msgid "Order actions"
+msgstr ""
+
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
+msgid "Edit order"
+msgstr ""
+
+#: order/templates/order/order_base.html:69
+msgid "Duplicate order"
+msgstr ""
+
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
+msgid "Hold order"
+msgstr ""
+
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
+msgid "Cancel order"
+msgstr ""
+
+#: order/templates/order/order_base.html:85
+#: order/templates/order/order_base.html:86
+#: order/templates/order/return_order_base.html:86
+#: order/templates/order/return_order_base.html:87
+#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
+msgid "Issue Order"
+msgstr ""
+
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
+msgid "Complete Order"
+msgstr ""
+
+#: order/templates/order/order_base.html:97
+msgid "Supplier part thumbnail"
+msgstr ""
+
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
+msgid "Order Description"
+msgstr ""
+
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
+msgid "Completed Line Items"
+msgstr ""
+
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
+msgid "Incomplete"
+msgstr ""
+
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
+#: report/templates/report/inventree_build_order_report.html:121
+msgid "Issued"
+msgstr ""
+
+#: order/templates/order/order_base.html:238
+msgid "Total cost"
+msgstr ""
+
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
+msgid "Total cost could not be calculated"
+msgstr ""
+
+#: order/templates/order/order_base.html:344
+msgid "Purchase Order QR Code"
+msgstr ""
+
+#: order/templates/order/order_base.html:356
+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:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
+#: templates/js/translated/return_order.js:505
+#: templates/js/translated/sales_order.js:1111
+#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
+#: templates/patterns/wizard/match_fields.html:70
+msgid "Remove row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:12
+#: part/templates/part/import_wizard/ajax_match_references.html:12
+#: part/templates/part/import_wizard/match_references.html:12
+msgid "Errors exist in the submitted data"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:28
+#: part/templates/part/import_wizard/ajax_match_references.html:21
+#: part/templates/part/import_wizard/match_references.html:28
+msgid "Row"
+msgstr ""
+
+#: order/templates/order/order_wizard/match_parts.html:29
+msgid "Select Supplier Part"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:8
+msgid "Return to Orders"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:13
+msgid "Upload File for Purchase Order"
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:14
+msgid "Order is already processed. Files cannot be uploaded."
+msgstr ""
+
+#: order/templates/order/order_wizard/po_upload.html:27
+#: part/templates/part/import_wizard/ajax_part_upload.html:10
+#: part/templates/part/import_wizard/part_upload.html:26
+#: templates/patterns/wizard/upload.html:13
+#, python-format
+msgid "Step %(step)s of %(count)s"
+msgstr ""
+
+#: order/templates/order/po_sidebar.html:7
+msgid "Received Stock"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:18
+msgid "Purchase Order Items"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:27
+#: order/templates/order/return_order_detail.html:24
+#: order/templates/order/sales_order_detail.html:24
+#: templates/js/translated/purchase_order.js:397
+#: templates/js/translated/return_order.js:458
+#: templates/js/translated/sales_order.js:237
+msgid "Add Line Item"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:31
+#: order/templates/order/purchase_order_detail.html:32
+#: order/templates/order/return_order_detail.html:28
+#: order/templates/order/return_order_detail.html:29
+msgid "Receive Line Items"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:50
+#: order/templates/order/return_order_detail.html:45
+#: order/templates/order/sales_order_detail.html:41
+msgid "Extra Lines"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:56
+#: order/templates/order/return_order_detail.html:51
+#: order/templates/order/sales_order_detail.html:47
+msgid "Add Extra Line"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:74
+msgid "Received Items"
+msgstr ""
+
+#: order/templates/order/purchase_order_detail.html:99
+#: order/templates/order/return_order_detail.html:85
+#: order/templates/order/sales_order_detail.html:139
+msgid "Order Notes"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
+msgid "Customer logo thumbnail"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:61
+msgid "Print return order report"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
+msgid "Print packing list"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
+#: templates/js/translated/return_order.js:308
+#: templates/js/translated/sales_order.js:792
+msgid "Customer Reference"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
+#: 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:1079
+#: templates/js/translated/purchase_order.js:1806
+#: templates/js/translated/return_order.js:380
+#: templates/js/translated/sales_order.js:850
+msgid "Total Cost"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:274
+msgid "Return Order QR Code"
+msgstr ""
+
+#: order/templates/order/return_order_base.html:286
+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:61
+msgid "Print sales order report"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
+msgid "Ship Items"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
+msgid "Mark As Shipped"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
+msgid "Complete Sales Order"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:139
+msgid "This Sales Order has not been fully allocated"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:177
+#: 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:340
+msgid "Sales Order QR Code"
+msgstr ""
+
+#: order/templates/order/sales_order_base.html:352
+msgid "Link Barcode to Sales Order"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:18
+msgid "Sales Order Items"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:67
+#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284
+msgid "Pending Shipments"
+msgstr ""
+
+#: order/templates/order/sales_order_detail.html:71
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
+#: templates/js/translated/filters.js:299
+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:407
+msgid "Sales order not found"
+msgstr ""
+
+#: order/views.py:413
+msgid "Price not found"
+msgstr ""
+
+#: order/views.py:416
+#, python-brace-format
+msgid "Updated {part} unit-price to {price}"
+msgstr ""
+
+#: order/views.py:422
+#, python-brace-format
+msgid "Updated {part} unit-price to {price} and quantity to {qty}"
+msgstr ""
+
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
+#: report/templates/report/inventree_stock_location_report.html:103
+#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
+#: templates/js/translated/stock.js:2122
+msgid "IPN"
+msgstr ""
+
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
+#: report/models.py:161 templates/js/translated/part.js:1238
+#: templates/js/translated/part.js:2353
+msgid "Revision"
+msgstr ""
+
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
+msgid "Keywords"
+msgstr ""
+
+#: part/admin.py:60
+msgid "Part Image"
+msgstr ""
+
+#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221
+msgid "Category ID"
+msgstr ""
+
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
+#: part/stocktake.py:222
+msgid "Category Name"
+msgstr ""
+
+#: part/admin.py:71 part/admin.py:316
+msgid "Default Location ID"
+msgstr ""
+
+#: part/admin.py:76
+msgid "Default Supplier ID"
+msgstr ""
+
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
+msgid "Variant Of"
+msgstr ""
+
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
+msgid "Minimum Stock"
+msgstr ""
+
+#: part/admin.py:138 part/templates/part/part_sidebar.html:27
+msgid "Used In"
+msgstr ""
+
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
+#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
+msgid "Building"
+msgstr ""
+
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
+#: templates/js/translated/part.js:976
+msgid "Minimum Cost"
+msgstr ""
+
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
+#: templates/js/translated/part.js:986
+msgid "Maximum Cost"
+msgstr ""
+
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
+msgid "Parent ID"
+msgstr ""
+
+#: part/admin.py:312 part/admin.py:394 stock/admin.py:61
+msgid "Parent Name"
+msgstr ""
+
+#: part/admin.py:320 part/templates/part/category.html:85
+#: part/templates/part/category.html:98
+msgid "Category Path"
+msgstr ""
+
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
+#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
+#: part/templates/part/category.html:138 part/templates/part/category.html:158
+#: 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:2822 templates/js/translated/search.js:130
+#: templates/navbar.html:24 users/models.py:203
+msgid "Parts"
+msgstr ""
+
+#: part/admin.py:378
+msgid "BOM Level"
+msgstr ""
+
+#: part/admin.py:381
+msgid "BOM Item ID"
+msgstr ""
+
+#: part/admin.py:391
+msgid "Parent IPN"
+msgstr ""
+
+#: part/admin.py:405
+msgid "Part Revision"
+msgstr ""
+
+#: part/admin.py:418 part/serializers.py:1400
+#: templates/js/translated/pricing.js:358
+#: templates/js/translated/pricing.js:1022
+msgid "Minimum Price"
+msgstr ""
+
+#: part/admin.py:423 part/serializers.py:1415
+#: templates/js/translated/pricing.js:353
+#: templates/js/translated/pricing.js:1030
+msgid "Maximum Price"
+msgstr ""
+
+#: part/api.py:104
+msgid "Starred"
+msgstr ""
+
+#: part/api.py:106
+msgid "Filter by starred categories"
+msgstr ""
+
+#: part/api.py:123 stock/api.py:310
+msgid "Depth"
+msgstr ""
+
+#: part/api.py:123
+msgid "Filter by category depth"
+msgstr ""
+
+#: part/api.py:141 stock/api.py:328
+msgid "Top Level"
+msgstr ""
+
+#: part/api.py:143
+msgid "Filter by top-level categories"
+msgstr ""
+
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
+#: part/api.py:158
+msgid "Include sub-categories in filtered results"
+msgstr ""
+
+#: part/api.py:178 templates/js/translated/part.js:311
+msgid "Parent"
+msgstr ""
+
+#: part/api.py:180
+msgid "Filter by parent category"
+msgstr ""
+
+#: part/api.py:213
+msgid "Exclude Tree"
+msgstr ""
+
+#: part/api.py:215
+msgid "Exclude sub-categories under the specified category"
+msgstr ""
+
+#: part/api.py:440
+msgid "Has Results"
+msgstr ""
+
+#: part/api.py:604
+msgid "Incoming Purchase Order"
+msgstr ""
+
+#: part/api.py:618
+msgid "Outgoing Sales Order"
+msgstr ""
+
+#: part/api.py:630
+msgid "Stock produced by Build Order"
+msgstr ""
+
+#: part/api.py:712
+msgid "Stock required for Build Order"
+msgstr ""
+
+#: part/api.py:858
+msgid "Validate entire Bill of Materials"
+msgstr ""
+
+#: part/api.py:864
+msgid "This option must be selected"
+msgstr ""
+
+#: part/api.py:900
+msgid "Is Revision"
+msgstr ""
+
+#: part/api.py:910
+msgid "Has Revisions"
+msgstr ""
+
+#: part/api.py:1101
+msgid "BOM Valid"
+msgstr ""
+
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
+#: templates/InvenTree/settings/settings_staff_js.html:300
+#: templates/js/translated/notification.js:60
+#: templates/js/translated/part.js:2383
+msgid "Category"
+msgstr ""
+
+#: part/api.py:1750
+msgid "Assembly part is testable"
+msgstr ""
+
+#: part/api.py:1759
+msgid "Component part is testable"
+msgstr ""
+
+#: part/api.py:1810
+msgid "Uses"
+msgstr ""
+
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
+#: templates/js/translated/part.js:2397
+msgid "Default Location"
+msgstr ""
+
+#: part/bom.py:184 part/serializers.py:957
+#: templates/email/low_stock_notification.html:16
+msgid "Total Stock"
+msgstr ""
+
+#: part/forms.py:49
+msgid "Input quantity for price calculation"
+msgstr ""
+
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
+#: part/templates/part/part_app_base.html:10
+msgid "Part Category"
+msgstr ""
+
+#: part/models.py:91 part/templates/part/category.html:133
+#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
+#: users/models.py:202
+msgid "Part Categories"
+msgstr ""
+
+#: part/models.py:110
+msgid "Default location for parts in this category"
+msgstr ""
+
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
+#: templates/js/translated/table_filters.js:246
+#: templates/js/translated/table_filters.js:290
+msgid "Structural"
+msgstr ""
+
+#: part/models.py:117
+msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
+msgstr ""
+
+#: part/models.py:126
+msgid "Default keywords"
+msgstr ""
+
+#: part/models.py:127
+msgid "Default keywords for parts in this category"
+msgstr ""
+
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
+#: templates/InvenTree/settings/settings_staff_js.html:445
+msgid "Icon"
+msgstr ""
+
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
+msgid "Icon (optional)"
+msgstr ""
+
+#: part/models.py:180
+msgid "You cannot make this part category structural because some parts are already assigned to it!"
+msgstr ""
+
+#: part/models.py:514
+msgid "Cannot delete this part as it is locked"
+msgstr ""
+
+#: part/models.py:517
+msgid "Cannot delete this part as it is still active"
+msgstr ""
+
+#: part/models.py:522
+msgid "Cannot delete this part as it is used in an assembly"
+msgstr ""
+
+#: part/models.py:560
+msgid "Invalid choice for parent part"
+msgstr ""
+
+#: part/models.py:608 part/models.py:615
+#, python-brace-format
+msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
+msgstr ""
+
+#: part/models.py:627
+#, python-brace-format
+msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
+msgstr ""
+
+#: part/models.py:694
+#, python-brace-format
+msgid "IPN must match regex pattern {pattern}"
+msgstr ""
+
+#: part/models.py:702
+msgid "Part cannot be a revision of itself"
+msgstr ""
+
+#: part/models.py:709
+msgid "Cannot make a revision of a part which is already a revision"
+msgstr ""
+
+#: part/models.py:716
+msgid "Revision code must be specified"
+msgstr ""
+
+#: part/models.py:723
+msgid "Revisions are only allowed for assembly parts"
+msgstr ""
+
+#: part/models.py:730
+msgid "Cannot make a revision of a template part"
+msgstr ""
+
+#: part/models.py:736
+msgid "Parent part must point to the same template"
+msgstr ""
+
+#: part/models.py:832
+msgid "Stock item with this serial number already exists"
+msgstr ""
+
+#: part/models.py:976
+msgid "Duplicate IPN not allowed in part settings"
+msgstr ""
+
+#: part/models.py:988
+msgid "Duplicate part revision already exists."
+msgstr ""
+
+#: part/models.py:997
+msgid "Part with this Name, IPN and Revision already exists."
+msgstr ""
+
+#: part/models.py:1012
+msgid "Parts cannot be assigned to structural part categories!"
+msgstr ""
+
+#: part/models.py:1044 part/models.py:4160
+msgid "Part name"
+msgstr ""
+
+#: part/models.py:1049
+msgid "Is Template"
+msgstr ""
+
+#: part/models.py:1050
+msgid "Is this part a template part?"
+msgstr ""
+
+#: part/models.py:1060
+msgid "Is this part a variant of another part?"
+msgstr ""
+
+#: part/models.py:1068
+msgid "Part description (optional)"
+msgstr ""
+
+#: part/models.py:1076
+msgid "Part keywords to improve visibility in search results"
+msgstr ""
+
+#: part/models.py:1086
+msgid "Part category"
+msgstr ""
+
+#: part/models.py:1101
+msgid "Part revision or version number"
+msgstr ""
+
+#: part/models.py:1111
+msgid "Is this part a revision of another part?"
+msgstr ""
+
+#: part/models.py:1112 part/templates/part/part_base.html:285
+msgid "Revision Of"
+msgstr ""
+
+#: part/models.py:1136
+msgid "Where is this item normally stored?"
+msgstr ""
+
+#: part/models.py:1182 part/templates/part/part_base.html:393
+msgid "Default Supplier"
+msgstr ""
+
+#: part/models.py:1183
+msgid "Default supplier part"
+msgstr ""
+
+#: part/models.py:1190
+msgid "Default Expiry"
+msgstr ""
+
+#: part/models.py:1191
+msgid "Expiry time (in days) for stock items of this part"
+msgstr ""
+
+#: part/models.py:1200
+msgid "Minimum allowed stock level"
+msgstr ""
+
+#: part/models.py:1209
+msgid "Units of measure for this part"
+msgstr ""
+
+#: part/models.py:1216
+msgid "Can this part be built from other parts?"
+msgstr ""
+
+#: part/models.py:1222
+msgid "Can this part be used to build other parts?"
+msgstr ""
+
+#: part/models.py:1228
+msgid "Does this part have tracking for unique items?"
+msgstr ""
+
+#: part/models.py:1234
+msgid "Can this part have test results recorded against it?"
+msgstr ""
+
+#: part/models.py:1240
+msgid "Can this part be purchased from external suppliers?"
+msgstr ""
+
+#: part/models.py:1246
+msgid "Can this part be sold to customers?"
+msgstr ""
+
+#: part/models.py:1250
+msgid "Is this part active?"
+msgstr ""
+
+#: part/models.py:1255 templates/js/translated/part.js:821
+#: templates/js/translated/table_filters.js:724
+msgid "Locked"
+msgstr ""
+
+#: part/models.py:1256
+msgid "Locked parts cannot be edited"
+msgstr ""
+
+#: part/models.py:1262
+msgid "Is this a virtual part, such as a software product or license?"
+msgstr ""
+
+#: part/models.py:1268
+msgid "BOM checksum"
+msgstr ""
+
+#: part/models.py:1269
+msgid "Stored BOM checksum"
+msgstr ""
+
+#: part/models.py:1277
+msgid "BOM checked by"
+msgstr ""
+
+#: part/models.py:1282
+msgid "BOM checked date"
+msgstr ""
+
+#: part/models.py:1298
+msgid "Creation User"
+msgstr ""
+
+#: part/models.py:1308
+msgid "Owner responsible for this part"
+msgstr ""
+
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
+#: templates/js/translated/part.js:2490
+msgid "Last Stocktake"
+msgstr ""
+
+#: part/models.py:2185
+msgid "Sell multiple"
+msgstr ""
+
+#: part/models.py:3167
+msgid "Currency used to cache pricing calculations"
+msgstr ""
+
+#: part/models.py:3183
+msgid "Minimum BOM Cost"
+msgstr ""
+
+#: part/models.py:3184
+msgid "Minimum cost of component parts"
+msgstr ""
+
+#: part/models.py:3190
+msgid "Maximum BOM Cost"
+msgstr ""
+
+#: part/models.py:3191
+msgid "Maximum cost of component parts"
+msgstr ""
+
+#: part/models.py:3197
+msgid "Minimum Purchase Cost"
+msgstr ""
+
+#: part/models.py:3198
+msgid "Minimum historical purchase cost"
+msgstr ""
+
+#: part/models.py:3204
+msgid "Maximum Purchase Cost"
+msgstr ""
+
+#: part/models.py:3205
+msgid "Maximum historical purchase cost"
+msgstr ""
+
+#: part/models.py:3211
+msgid "Minimum Internal Price"
+msgstr ""
+
+#: part/models.py:3212
+msgid "Minimum cost based on internal price breaks"
+msgstr ""
+
+#: part/models.py:3218
+msgid "Maximum Internal Price"
+msgstr ""
+
+#: part/models.py:3219
+msgid "Maximum cost based on internal price breaks"
+msgstr ""
+
+#: part/models.py:3225
+msgid "Minimum Supplier Price"
+msgstr ""
+
+#: part/models.py:3226
+msgid "Minimum price of part from external suppliers"
+msgstr ""
+
+#: part/models.py:3232
+msgid "Maximum Supplier Price"
+msgstr ""
+
+#: part/models.py:3233
+msgid "Maximum price of part from external suppliers"
+msgstr ""
+
+#: part/models.py:3239
+msgid "Minimum Variant Cost"
+msgstr ""
+
+#: part/models.py:3240
+msgid "Calculated minimum cost of variant parts"
+msgstr ""
+
+#: part/models.py:3246
+msgid "Maximum Variant Cost"
+msgstr ""
+
+#: part/models.py:3247
+msgid "Calculated maximum cost of variant parts"
+msgstr ""
+
+#: part/models.py:3254
+msgid "Override minimum cost"
+msgstr ""
+
+#: part/models.py:3261
+msgid "Override maximum cost"
+msgstr ""
+
+#: part/models.py:3268
+msgid "Calculated overall minimum cost"
+msgstr ""
+
+#: part/models.py:3275
+msgid "Calculated overall maximum cost"
+msgstr ""
+
+#: part/models.py:3281
+msgid "Minimum Sale Price"
+msgstr ""
+
+#: part/models.py:3282
+msgid "Minimum sale price based on price breaks"
+msgstr ""
+
+#: part/models.py:3288
+msgid "Maximum Sale Price"
+msgstr ""
+
+#: part/models.py:3289
+msgid "Maximum sale price based on price breaks"
+msgstr ""
+
+#: part/models.py:3295
+msgid "Minimum Sale Cost"
+msgstr ""
+
+#: part/models.py:3296
+msgid "Minimum historical sale price"
+msgstr ""
+
+#: part/models.py:3302
+msgid "Maximum Sale Cost"
+msgstr ""
+
+#: part/models.py:3303
+msgid "Maximum historical sale price"
+msgstr ""
+
+#: part/models.py:3322
+msgid "Part for stocktake"
+msgstr ""
+
+#: part/models.py:3327
+msgid "Item Count"
+msgstr ""
+
+#: part/models.py:3328
+msgid "Number of individual stock entries at time of stocktake"
+msgstr ""
+
+#: part/models.py:3336
+msgid "Total available stock at time of stocktake"
+msgstr ""
+
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
+#: part/templates/part/part_scheduling.html:13
+#: report/templates/report/inventree_test_report.html:106
+#: templates/InvenTree/settings/plugin_settings.html:37
+#: templates/InvenTree/settings/settings_staff_js.html:543
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
+msgid "Date"
+msgstr ""
+
+#: part/models.py:3341
+msgid "Date stocktake was performed"
+msgstr ""
+
+#: part/models.py:3349
+msgid "Additional notes"
+msgstr ""
+
+#: part/models.py:3359
+msgid "User who performed this stocktake"
+msgstr ""
+
+#: part/models.py:3365
+msgid "Minimum Stock Cost"
+msgstr ""
+
+#: part/models.py:3366
+msgid "Estimated minimum cost of stock on hand"
+msgstr ""
+
+#: part/models.py:3372
+msgid "Maximum Stock Cost"
+msgstr ""
+
+#: part/models.py:3373
+msgid "Estimated maximum cost of stock on hand"
+msgstr ""
+
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
+msgid "Report"
+msgstr ""
+
+#: part/models.py:3430
+msgid "Stocktake report file (generated internally)"
+msgstr ""
+
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
+msgid "Part Count"
+msgstr ""
+
+#: part/models.py:3436
+msgid "Number of parts covered by stocktake"
+msgstr ""
+
+#: part/models.py:3446
+msgid "User who requested this stocktake report"
+msgstr ""
+
+#: part/models.py:3456
+msgid "Part Sale Price Break"
+msgstr ""
+
+#: part/models.py:3568
+msgid "Part Test Template"
+msgstr ""
+
+#: part/models.py:3594
+msgid "Invalid template name - must include at least one alphanumeric character"
+msgstr ""
+
+#: part/models.py:3615 part/models.py:3784
+msgid "Choices must be unique"
+msgstr ""
+
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
+msgstr ""
+
+#: part/models.py:3637
+msgid "Test template with the same key already exists for part"
+msgstr ""
+
+#: part/models.py:3654 templates/js/translated/part.js:2898
+msgid "Test Name"
+msgstr ""
+
+#: part/models.py:3655
+msgid "Enter a name for the test"
+msgstr ""
+
+#: part/models.py:3661
+msgid "Test Key"
+msgstr ""
+
+#: part/models.py:3662
+msgid "Simplified key for the test"
+msgstr ""
+
+#: part/models.py:3669
+msgid "Test Description"
+msgstr ""
+
+#: part/models.py:3670
+msgid "Enter description for this test"
+msgstr ""
+
+#: part/models.py:3674 report/models.py:216
+#: templates/js/translated/part.js:2919
+#: templates/js/translated/table_filters.js:502
+msgid "Enabled"
+msgstr ""
+
+#: part/models.py:3674
+msgid "Is this test enabled?"
+msgstr ""
+
+#: part/models.py:3679 templates/js/translated/part.js:2927
+#: templates/js/translated/table_filters.js:498
+msgid "Required"
+msgstr ""
+
+#: part/models.py:3680
+msgid "Is this test required to pass?"
+msgstr ""
+
+#: part/models.py:3685 templates/js/translated/part.js:2935
+msgid "Requires Value"
+msgstr ""
+
+#: part/models.py:3686
+msgid "Does this test require a value when adding a test result?"
+msgstr ""
+
+#: part/models.py:3691 templates/js/translated/part.js:2942
+msgid "Requires Attachment"
+msgstr ""
+
+#: part/models.py:3693
+msgid "Does this test require a file attachment when adding a test result?"
+msgstr ""
+
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
+msgid "Choices"
+msgstr ""
+
+#: part/models.py:3700
+msgid "Valid choices for this test (comma-separated)"
+msgstr ""
+
+#: part/models.py:3732
+msgid "Part Parameter Template"
+msgstr ""
+
+#: part/models.py:3759
+msgid "Checkbox parameters cannot have units"
+msgstr ""
+
+#: part/models.py:3764
+msgid "Checkbox parameters cannot have choices"
+msgstr ""
+
+#: part/models.py:3801
+msgid "Parameter template name must be unique"
+msgstr ""
+
+#: part/models.py:3816
+msgid "Parameter Name"
+msgstr ""
+
+#: part/models.py:3823
+msgid "Physical units for this parameter"
+msgstr ""
+
+#: part/models.py:3831
+msgid "Parameter description"
+msgstr ""
+
+#: part/models.py:3837 templates/js/translated/part.js:1634
+#: templates/js/translated/table_filters.js:837
+msgid "Checkbox"
+msgstr ""
+
+#: part/models.py:3838
+msgid "Is this parameter a checkbox?"
+msgstr ""
+
+#: part/models.py:3844
+msgid "Valid choices for this parameter (comma-separated)"
+msgstr ""
+
+#: part/models.py:3881
+msgid "Part Parameter"
+msgstr ""
+
+#: part/models.py:3907
+msgid "Parameter cannot be modified - part is locked"
+msgstr ""
+
+#: part/models.py:3945
+msgid "Invalid choice for parameter value"
+msgstr ""
+
+#: part/models.py:3996
+msgid "Parent Part"
+msgstr ""
+
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
+#: templates/InvenTree/settings/settings_staff_js.html:295
+msgid "Parameter Template"
+msgstr ""
+
+#: part/models.py:4010
+msgid "Parameter Value"
+msgstr ""
+
+#: part/models.py:4060
+msgid "Part Category Parameter Template"
+msgstr ""
+
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
+msgid "Default Value"
+msgstr ""
+
+#: part/models.py:4120
+msgid "Default Parameter Value"
+msgstr ""
+
+#: part/models.py:4158
+msgid "Part ID or part name"
+msgstr ""
+
+#: part/models.py:4159
+msgid "Unique part ID value"
+msgstr ""
+
+#: part/models.py:4161
+msgid "Part IPN value"
+msgstr ""
+
+#: part/models.py:4162
+msgid "Level"
+msgstr ""
+
+#: part/models.py:4162
+msgid "BOM level"
+msgstr ""
+
+#: part/models.py:4272
+msgid "BOM item cannot be modified - assembly is locked"
+msgstr ""
+
+#: part/models.py:4279
+msgid "BOM item cannot be modified - variant assembly is locked"
+msgstr ""
+
+#: part/models.py:4289
+msgid "Select parent part"
+msgstr ""
+
+#: part/models.py:4299
+msgid "Sub part"
+msgstr ""
+
+#: part/models.py:4300
+msgid "Select part to be used in BOM"
+msgstr ""
+
+#: part/models.py:4311
+msgid "BOM quantity for this BOM item"
+msgstr ""
+
+#: part/models.py:4317
+msgid "This BOM item is optional"
+msgstr ""
+
+#: part/models.py:4323
+msgid "This BOM item is consumable (it is not tracked in build orders)"
+msgstr ""
+
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
+msgid "Overage"
+msgstr ""
+
+#: part/models.py:4331
+msgid "Estimated build wastage quantity (absolute or percentage)"
+msgstr ""
+
+#: part/models.py:4338
+msgid "BOM item reference"
+msgstr ""
+
+#: part/models.py:4346
+msgid "BOM item notes"
+msgstr ""
+
+#: part/models.py:4352
+msgid "Checksum"
+msgstr ""
+
+#: part/models.py:4353
+msgid "BOM line checksum"
+msgstr ""
+
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
+msgid "Validated"
+msgstr ""
+
+#: part/models.py:4359
+msgid "This BOM item has been validated"
+msgstr ""
+
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
+#: templates/js/translated/bom.js:1054
+#: templates/js/translated/table_filters.js:185
+#: templates/js/translated/table_filters.js:218
+msgid "Gets inherited"
+msgstr ""
+
+#: part/models.py:4365
+msgid "This BOM item is inherited by BOMs for variant parts"
+msgstr ""
+
+#: part/models.py:4371
+msgid "Stock items for variant parts can be used for this BOM item"
+msgstr ""
+
+#: part/models.py:4456 stock/models.py:762
+msgid "Quantity must be integer value for trackable parts"
+msgstr ""
+
+#: part/models.py:4466 part/models.py:4468
+msgid "Sub part must be specified"
+msgstr ""
+
+#: part/models.py:4613
+msgid "BOM Item Substitute"
+msgstr ""
+
+#: part/models.py:4634
+msgid "Substitute part cannot be the same as the master part"
+msgstr ""
+
+#: part/models.py:4647
+msgid "Parent BOM item"
+msgstr ""
+
+#: part/models.py:4655
+msgid "Substitute part"
+msgstr ""
+
+#: part/models.py:4671
+msgid "Part 1"
+msgstr ""
+
+#: part/models.py:4679
+msgid "Part 2"
+msgstr ""
+
+#: part/models.py:4680
+msgid "Select Related Part"
+msgstr ""
+
+#: part/models.py:4699
+msgid "Part relationship cannot be created between a part and itself"
+msgstr ""
+
+#: part/models.py:4704
+msgid "Duplicate relationship already exists"
+msgstr ""
+
+#: part/serializers.py:124
+msgid "Parent Category"
+msgstr ""
+
+#: part/serializers.py:125 templates/js/translated/part.js:312
+msgid "Parent part category"
+msgstr ""
+
+#: part/serializers.py:132 part/serializers.py:158
+#: part/templates/part/category.html:119 part/templates/part/category.html:204
+#: part/templates/part/category_sidebar.html:7
+msgid "Subcategories"
+msgstr ""
+
+#: part/serializers.py:197
+msgid "Results"
+msgstr ""
+
+#: part/serializers.py:198
+msgid "Number of results recorded against this template"
+msgstr ""
+
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
+msgid "Purchase currency of this stock item"
+msgstr ""
+
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
+msgid "Number of parts using this template"
+msgstr ""
+
+#: part/serializers.py:465
+msgid "No parts selected"
+msgstr ""
+
+#: part/serializers.py:475
+msgid "Select category"
+msgstr ""
+
+#: part/serializers.py:510
+msgid "Original Part"
+msgstr ""
+
+#: part/serializers.py:511
+msgid "Select original part to duplicate"
+msgstr ""
+
+#: part/serializers.py:516
+msgid "Copy Image"
+msgstr ""
+
+#: part/serializers.py:517
+msgid "Copy image from original part"
+msgstr ""
+
+#: part/serializers.py:523 part/templates/part/detail.html:293
+msgid "Copy BOM"
+msgstr ""
+
+#: part/serializers.py:524
+msgid "Copy bill of materials from original part"
+msgstr ""
+
+#: part/serializers.py:530
+msgid "Copy Parameters"
+msgstr ""
+
+#: part/serializers.py:531
+msgid "Copy parameter data from original part"
+msgstr ""
+
+#: part/serializers.py:537
+msgid "Copy Notes"
+msgstr ""
+
+#: part/serializers.py:538
+msgid "Copy notes from original part"
+msgstr ""
+
+#: part/serializers.py:556
+msgid "Initial Stock Quantity"
+msgstr ""
+
+#: part/serializers.py:558
+msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
+msgstr ""
+
+#: part/serializers.py:565
+msgid "Initial Stock Location"
+msgstr ""
+
+#: part/serializers.py:566
+msgid "Specify initial stock location for this Part"
+msgstr ""
+
+#: part/serializers.py:583
+msgid "Select supplier (or leave blank to skip)"
+msgstr ""
+
+#: part/serializers.py:599
+msgid "Select manufacturer (or leave blank to skip)"
+msgstr ""
+
+#: part/serializers.py:609
+msgid "Manufacturer part number"
+msgstr ""
+
+#: part/serializers.py:616
+msgid "Selected company is not a valid supplier"
+msgstr ""
+
+#: part/serializers.py:625
+msgid "Selected company is not a valid manufacturer"
+msgstr ""
+
+#: part/serializers.py:636
+msgid "Manufacturer part matching this MPN already exists"
+msgstr ""
+
+#: part/serializers.py:643
+msgid "Supplier part matching this SKU already exists"
+msgstr ""
+
+#: part/serializers.py:955
+msgid "Revisions"
+msgstr ""
+
+#: part/serializers.py:960
+msgid "Unallocated Stock"
+msgstr ""
+
+#: part/serializers.py:963
+msgid "Variant Stock"
+msgstr ""
+
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
+#: templates/js/translated/part.js:474
+msgid "Duplicate Part"
+msgstr ""
+
+#: part/serializers.py:994
+msgid "Copy initial data from another Part"
+msgstr ""
+
+#: part/serializers.py:1000 templates/js/translated/part.js:103
+msgid "Initial Stock"
+msgstr ""
+
+#: part/serializers.py:1001
+msgid "Create Part with initial stock quantity"
+msgstr ""
+
+#: part/serializers.py:1007
+msgid "Supplier Information"
+msgstr ""
+
+#: part/serializers.py:1008
+msgid "Add initial supplier information for this part"
+msgstr ""
+
+#: part/serializers.py:1016
+msgid "Copy Category Parameters"
+msgstr ""
+
+#: part/serializers.py:1017
+msgid "Copy parameter templates from selected part category"
+msgstr ""
+
+#: part/serializers.py:1022
+msgid "Existing Image"
+msgstr ""
+
+#: part/serializers.py:1023
+msgid "Filename of an existing part image"
+msgstr ""
+
+#: part/serializers.py:1040
+msgid "Image file does not exist"
+msgstr ""
+
+#: part/serializers.py:1247
+msgid "Limit stocktake report to a particular part, and any variant parts"
+msgstr ""
+
+#: part/serializers.py:1257
+msgid "Limit stocktake report to a particular part category, and any child categories"
+msgstr ""
+
+#: part/serializers.py:1267
+msgid "Limit stocktake report to a particular stock location, and any child locations"
+msgstr ""
+
+#: part/serializers.py:1273
+msgid "Exclude External Stock"
+msgstr ""
+
+#: part/serializers.py:1274
+msgid "Exclude stock items in external locations"
+msgstr ""
+
+#: part/serializers.py:1279
+msgid "Generate Report"
+msgstr ""
+
+#: part/serializers.py:1280
+msgid "Generate report file containing calculated stocktake data"
+msgstr ""
+
+#: part/serializers.py:1285
+msgid "Update Parts"
+msgstr ""
+
+#: part/serializers.py:1286
+msgid "Update specified parts with calculated stocktake data"
+msgstr ""
+
+#: part/serializers.py:1294
+msgid "Stocktake functionality is not enabled"
+msgstr ""
+
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
+msgid "Override calculated value for minimum price"
+msgstr ""
+
+#: part/serializers.py:1408
+msgid "Minimum price currency"
+msgstr ""
+
+#: part/serializers.py:1416
+msgid "Override calculated value for maximum price"
+msgstr ""
+
+#: part/serializers.py:1423
+msgid "Maximum price currency"
+msgstr ""
+
+#: part/serializers.py:1452
+msgid "Update"
+msgstr ""
+
+#: part/serializers.py:1453
+msgid "Update pricing for this part"
+msgstr ""
+
+#: part/serializers.py:1476
+#, python-brace-format
+msgid "Could not convert from provided currencies to {default_currency}"
+msgstr ""
+
+#: part/serializers.py:1483
+msgid "Minimum price must not be greater than maximum price"
+msgstr ""
+
+#: part/serializers.py:1486
+msgid "Maximum price must not be less than minimum price"
+msgstr ""
+
+#: part/serializers.py:1634
+msgid "Select the parent assembly"
+msgstr ""
+
+#: part/serializers.py:1643
+msgid "Component Name"
+msgstr ""
+
+#: part/serializers.py:1646
+msgid "Component IPN"
+msgstr ""
+
+#: part/serializers.py:1649
+msgid "Component Description"
+msgstr ""
+
+#: part/serializers.py:1655
+msgid "Select the component part"
+msgstr ""
+
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
+#: templates/js/translated/bom.js:1219
+msgid "Can Build"
+msgstr ""
+
+#: part/serializers.py:1899
+msgid "Select part to copy BOM from"
+msgstr ""
+
+#: part/serializers.py:1907
+msgid "Remove Existing Data"
+msgstr ""
+
+#: part/serializers.py:1908
+msgid "Remove existing BOM items before copying"
+msgstr ""
+
+#: part/serializers.py:1913
+msgid "Include Inherited"
+msgstr ""
+
+#: part/serializers.py:1914
+msgid "Include BOM items which are inherited from templated parts"
+msgstr ""
+
+#: part/serializers.py:1919
+msgid "Skip Invalid Rows"
+msgstr ""
+
+#: part/serializers.py:1920
+msgid "Enable this option to skip invalid rows"
+msgstr ""
+
+#: part/serializers.py:1925
+msgid "Copy Substitute Parts"
+msgstr ""
+
+#: part/serializers.py:1926
+msgid "Copy substitute parts when duplicate BOM items"
+msgstr ""
+
+#: part/serializers.py:1963
+msgid "Clear Existing BOM"
+msgstr ""
+
+#: part/serializers.py:1964
+msgid "Delete existing BOM items before uploading"
+msgstr ""
+
+#: part/serializers.py:1996
+msgid "No part column specified"
+msgstr ""
+
+#: part/serializers.py:2040
+msgid "Multiple matching parts found"
+msgstr ""
+
+#: part/serializers.py:2043
+msgid "No matching part found"
+msgstr ""
+
+#: part/serializers.py:2045
+msgid "Part is not designated as a component"
+msgstr ""
+
+#: part/serializers.py:2054
+msgid "Quantity not provided"
+msgstr ""
+
+#: part/serializers.py:2062
+msgid "Invalid quantity"
+msgstr ""
+
+#: part/serializers.py:2085
+msgid "At least one BOM item is required"
+msgstr ""
+
+#: part/stocktake.py:224 templates/js/translated/part.js:1073
+#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
+#: templates/js/translated/purchase_order.js:2138
+msgid "Total Quantity"
+msgstr ""
+
+#: part/stocktake.py:225
+msgid "Total Cost Min"
+msgstr ""
+
+#: part/stocktake.py:226
+msgid "Total Cost Max"
+msgstr ""
+
+#: part/stocktake.py:284
+msgid "Stocktake Report Available"
+msgstr ""
+
+#: part/stocktake.py:285
+msgid "A new stocktake report is available for download"
+msgstr ""
+
+#: part/tasks.py:37
+msgid "Low stock notification"
+msgstr ""
+
+#: part/tasks.py:39
+#, python-brace-format
+msgid "The available stock for {part.name} has fallen below the configured minimum level"
+msgstr ""
+
+#: part/templates/part/bom.html:6
+msgid "You do not have permission to edit the BOM."
+msgstr ""
+
+#: part/templates/part/bom.html:15
+msgid "The BOM this part has been changed, and must be validated"
+msgstr ""
+
+#: part/templates/part/bom.html:17
+#, python-format
+msgid "This BOM was last checked by %(checker)s on %(check_date)s"
+msgstr ""
+
+#: part/templates/part/bom.html:21
+msgid "This BOM has not been validated."
+msgstr ""
+
+#: part/templates/part/category.html:32
+msgid "Perform stocktake for this part category"
+msgstr ""
+
+#: part/templates/part/category.html:38 part/templates/part/category.html:42
+msgid "You are subscribed to notifications for this category"
+msgstr ""
+
+#: part/templates/part/category.html:46
+msgid "Subscribe to notifications for this category"
+msgstr ""
+
+#: part/templates/part/category.html:52
+msgid "Category Actions"
+msgstr ""
+
+#: part/templates/part/category.html:57
+msgid "Edit category"
+msgstr ""
+
+#: part/templates/part/category.html:58
+msgid "Edit Category"
+msgstr ""
+
+#: part/templates/part/category.html:62
+msgid "Delete category"
+msgstr ""
+
+#: part/templates/part/category.html:63
+msgid "Delete Category"
+msgstr ""
+
+#: part/templates/part/category.html:99
+msgid "Top level part category"
+msgstr ""
+
+#: part/templates/part/category.html:124
+msgid "Parts (Including subcategories)"
+msgstr ""
+
+#: part/templates/part/category.html:162
+msgid "Create new part"
+msgstr ""
+
+#: part/templates/part/category.html:163 templates/js/translated/bom.js:444
+msgid "New Part"
+msgstr ""
+
+#: part/templates/part/category.html:189
+#: templates/InvenTree/settings/part_parameters.html:7
+#: templates/InvenTree/settings/sidebar.html:49
+msgid "Part Parameters"
+msgstr ""
+
+#: part/templates/part/category.html:208
+msgid "Create new part category"
+msgstr ""
+
+#: part/templates/part/category.html:209
+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:256 templates/InvenTree/settings/part_stocktake.html:30
+#: templates/InvenTree/settings/sidebar.html:53
+#: templates/js/translated/stock.js:2302 users/models.py:204
+msgid "Stocktake"
+msgstr ""
+
+#: part/templates/part/detail.html:83
+msgid "Part Test Templates"
+msgstr ""
+
+#: part/templates/part/detail.html:88
+msgid "Add Test Template"
+msgstr ""
+
+#: part/templates/part/detail.html:106
+msgid "Part Test Statistics"
+msgstr ""
+
+#: part/templates/part/detail.html:155 stock/templates/stock/item.html:49
+msgid "Sales Order Allocations"
+msgstr ""
+
+#: part/templates/part/detail.html:172
+msgid "Part Notes"
+msgstr ""
+
+#: part/templates/part/detail.html:187
+msgid "Part Variants"
+msgstr ""
+
+#: part/templates/part/detail.html:191
+msgid "Create new variant"
+msgstr ""
+
+#: part/templates/part/detail.html:192
+msgid "New Variant"
+msgstr ""
+
+#: part/templates/part/detail.html:215
+msgid "Add new parameter"
+msgstr ""
+
+#: part/templates/part/detail.html:248 part/templates/part/part_sidebar.html:60
+msgid "Related Parts"
+msgstr ""
+
+#: part/templates/part/detail.html:252 part/templates/part/detail.html:253
+msgid "Add Related"
+msgstr ""
+
+#: part/templates/part/detail.html:271 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:276
+msgid "Export actions"
+msgstr ""
+
+#: part/templates/part/detail.html:280 templates/js/translated/bom.js:340
+msgid "Export BOM"
+msgstr ""
+
+#: part/templates/part/detail.html:282
+msgid "Print BOM Report"
+msgstr ""
+
+#: part/templates/part/detail.html:288
+msgid "BOM actions"
+msgstr ""
+
+#: part/templates/part/detail.html:292
+msgid "Upload BOM"
+msgstr ""
+
+#: part/templates/part/detail.html:294
+msgid "Validate BOM"
+msgstr ""
+
+#: part/templates/part/detail.html:299 part/templates/part/detail.html:300
+#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321
+msgid "Add BOM Item"
+msgstr ""
+
+#: part/templates/part/detail.html:313
+msgid "Assemblies"
+msgstr ""
+
+#: part/templates/part/detail.html:329
+msgid "Part Builds"
+msgstr ""
+
+#: part/templates/part/detail.html:354 stock/templates/stock/item.html:36
+msgid "Build Order Allocations"
+msgstr ""
+
+#: part/templates/part/detail.html:368
+msgid "Part Suppliers"
+msgstr ""
+
+#: part/templates/part/detail.html:388
+msgid "Part Manufacturers"
+msgstr ""
+
+#: part/templates/part/detail.html:672
+msgid "Related Part"
+msgstr ""
+
+#: part/templates/part/detail.html:680
+msgid "Add Related Part"
+msgstr ""
+
+#: part/templates/part/detail.html:765
+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:154 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:155
+msgid "Select file format"
+msgstr ""
+
+#: part/templates/part/part_app_base.html:12
+msgid "Part List"
+msgstr ""
+
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
+msgid "You are subscribed to notifications for this part"
+msgstr ""
+
+#: part/templates/part/part_base.html:34
+msgid "Subscribe to notifications for this part"
+msgstr ""
+
+#: part/templates/part/part_base.html:53
+#: stock/templates/stock/item_base.html:62
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
+msgid "Print Label"
+msgstr ""
+
+#: part/templates/part/part_base.html:59
+msgid "Show pricing information"
+msgstr ""
+
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
+msgid "Stock actions"
+msgstr ""
+
+#: part/templates/part/part_base.html:71
+msgid "Count part stock"
+msgstr ""
+
+#: part/templates/part/part_base.html:77
+msgid "Transfer part stock"
+msgstr ""
+
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
+msgid "Part actions"
+msgstr ""
+
+#: part/templates/part/part_base.html:95
+msgid "Duplicate part"
+msgstr ""
+
+#: part/templates/part/part_base.html:98
+msgid "Edit part"
+msgstr ""
+
+#: part/templates/part/part_base.html:101
+msgid "Delete part"
+msgstr ""
+
+#: part/templates/part/part_base.html:120
+msgid "Part is a template part (variants can be made from this part)"
+msgstr ""
+
+#: part/templates/part/part_base.html:124
+msgid "Part can be assembled from other parts"
+msgstr ""
+
+#: part/templates/part/part_base.html:128
+msgid "Part can be used in assemblies"
+msgstr ""
+
+#: part/templates/part/part_base.html:132
+msgid "Part stock is tracked by serial number"
+msgstr ""
+
+#: part/templates/part/part_base.html:136
+msgid "Part can be purchased from external suppliers"
+msgstr ""
+
+#: part/templates/part/part_base.html:140
+msgid "Part can be sold to customers"
+msgstr ""
+
+#: part/templates/part/part_base.html:146
+msgid "Part is not active"
+msgstr ""
+
+#: part/templates/part/part_base.html:154
+msgid "Part is virtual (not a physical part)"
+msgstr ""
+
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
+msgid "Show Part Details"
+msgstr ""
+
+#: part/templates/part/part_base.html:218
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
+msgid "Allocated to Build Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
+msgid "Allocated to Sales Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:308
+msgid "Minimum stock level"
+msgstr ""
+
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
+#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
+#: templates/js/translated/pricing.js:391
+#: templates/js/translated/pricing.js:1052
+msgid "Price Range"
+msgstr ""
+
+#: part/templates/part/part_base.html:369
+msgid "Latest Serial Number"
+msgstr ""
+
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
+msgid "Search for serial number"
+msgstr ""
+
+#: part/templates/part/part_base.html:461
+msgid "Part QR Code"
+msgstr ""
+
+#: part/templates/part/part_base.html:478
+msgid "Link Barcode to Part"
+msgstr ""
+
+#: part/templates/part/part_base.html:528
+msgid "Calculate"
+msgstr ""
+
+#: part/templates/part/part_base.html:545
+msgid "Remove associated image from this part"
+msgstr ""
+
+#: part/templates/part/part_base.html:596
+msgid "No matching images found"
+msgstr ""
+
+#: part/templates/part/part_base.html:692
+msgid "Hide Part Details"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76
+#: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485
+msgid "Supplier Pricing"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:26
+#: part/templates/part/part_pricing.html:52
+#: part/templates/part/part_pricing.html:95
+#: part/templates/part/part_pricing.html:110
+msgid "Unit Cost"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:40
+msgid "No supplier pricing available"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90
+#: part/templates/part/prices.html:250
+msgid "BOM Pricing"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:66
+msgid "Unit Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:72
+msgid "Total Purchase Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:83
+msgid "No BOM pricing available"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:92
+msgid "Internal Price"
+msgstr ""
+
+#: part/templates/part/part_pricing.html:123
+msgid "No pricing information is available for this part."
+msgstr ""
+
+#: part/templates/part/part_scheduling.html:14
+msgid "Scheduled Quantity"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:11
+msgid "Variants"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:14
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
+#: stock/templates/stock/stock_app_base.html:10
+#: templates/InvenTree/search.html:153
+#: templates/InvenTree/settings/sidebar.html:51
+#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
+#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
+msgid "Stock"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:30
+#: templates/InvenTree/settings/sidebar.html:39
+msgid "Pricing"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:44
+msgid "Scheduling"
+msgstr ""
+
+#: part/templates/part/part_sidebar.html:54
+msgid "Test Templates"
+msgstr ""
+
+#: part/templates/part/part_thumb.html:11
+msgid "Select from existing images"
+msgstr ""
+
+#: part/templates/part/prices.html:11
+msgid "Pricing Overview"
+msgstr ""
+
+#: part/templates/part/prices.html:14
+msgid "Refresh Part Pricing"
+msgstr ""
+
+#: part/templates/part/prices.html:17
+msgid "Override Part Pricing"
+msgstr ""
+
+#: part/templates/part/prices.html:18
+#: templates/InvenTree/settings/settings_staff_js.html:80
+#: templates/InvenTree/settings/user.html:24
+#: templates/js/translated/helpers.js:104
+#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
+#: templates/notes_buttons.html:4
+msgid "Edit"
+msgstr ""
+
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
+msgid "Last Updated"
+msgstr ""
+
+#: part/templates/part/prices.html:37 part/templates/part/prices.html:127
+msgid "Price Category"
+msgstr ""
+
+#: part/templates/part/prices.html:38 part/templates/part/prices.html:128
+msgid "Minimum"
+msgstr ""
+
+#: part/templates/part/prices.html:39 part/templates/part/prices.html:129
+msgid "Maximum"
+msgstr ""
+
+#: part/templates/part/prices.html:51 part/templates/part/prices.html:174
+msgid "Internal Pricing"
+msgstr ""
+
+#: part/templates/part/prices.html:64 part/templates/part/prices.html:206
+msgid "Purchase History"
+msgstr ""
+
+#: part/templates/part/prices.html:98 part/templates/part/prices.html:274
+msgid "Variant Pricing"
+msgstr ""
+
+#: part/templates/part/prices.html:106
+msgid "Pricing Overrides"
+msgstr ""
+
+#: part/templates/part/prices.html:113
+msgid "Overall Pricing"
+msgstr ""
+
+#: part/templates/part/prices.html:149 part/templates/part/prices.html:326
+msgid "Sale History"
+msgstr ""
+
+#: part/templates/part/prices.html:157
+msgid "Sale price data is not available for this part"
+msgstr ""
+
+#: part/templates/part/prices.html:164
+msgid "Price range data is not available for this part."
+msgstr ""
+
+#: part/templates/part/prices.html:175 part/templates/part/prices.html:207
+#: part/templates/part/prices.html:228 part/templates/part/prices.html:251
+#: part/templates/part/prices.html:275 part/templates/part/prices.html:298
+#: part/templates/part/prices.html:327
+msgid "Jump to overview"
+msgstr ""
+
+#: part/templates/part/prices.html:180
+msgid "Add Internal Price Break"
+msgstr ""
+
+#: part/templates/part/prices.html:297
+msgid "Sale Pricing"
+msgstr ""
+
+#: part/templates/part/prices.html:303
+msgid "Add Sell Price Break"
+msgstr ""
+
+#: part/templates/part/pricing_javascript.html:24
+msgid "Update Pricing"
+msgstr ""
+
+#: part/templates/part/stock_count.html:7
+#: templates/js/translated/model_renderers.js:231
+#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
+#: templates/js/translated/part.js:2149
+msgid "No Stock"
+msgstr ""
+
+#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120
+msgid "Low Stock"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:8
+msgid "Return to BOM"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:13
+msgid "Upload Bill of Materials"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:19
+msgid "BOM upload requirements"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:23
+#: part/templates/part/upload_bom.html:90
+msgid "Upload BOM File"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:29
+msgid "Submit BOM Data"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:37
+msgid "Requirements for BOM upload"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "The BOM file must contain the required named columns as provided in the "
+msgstr ""
+
+#: part/templates/part/upload_bom.html:39
+msgid "BOM Upload Template"
+msgstr ""
+
+#: part/templates/part/upload_bom.html:40
+msgid "Each part must already exist in the database"
+msgstr ""
+
+#: part/templates/part/variant_part.html:9
+msgid "Create new part variant"
+msgstr ""
+
+#: part/templates/part/variant_part.html:10
+msgid "Create a new variant part from this template"
+msgstr ""
+
+#: part/views.py:111
+msgid "Match References"
+msgstr ""
+
+#: part/views.py:275
+#, python-brace-format
+msgid "Can't import part {new_part.name} because there is no category assigned"
+msgstr ""
+
+#: part/views.py:425
+msgid "Select Part Image"
+msgstr ""
+
+#: part/views.py:448
+msgid "Updated part image"
+msgstr ""
+
+#: part/views.py:451
+msgid "Part image not found"
+msgstr ""
+
+#: part/views.py:545
+msgid "Part Pricing"
+msgstr ""
+
+#: plugin/api.py:175
+msgid "Plugin cannot be deleted as it is currently active"
+msgstr ""
+
+#: plugin/base/action/api.py:32
+msgid "No action specified"
+msgstr ""
+
+#: plugin/base/action/api.py:41
+msgid "No matching action found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:203
+msgid "No match found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:207
+msgid "Match found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
+msgid "Model is not supported"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:250
+msgid "Model instance not found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
+msgid "Barcode matches existing item"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:418
+msgid "No matching part data found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:434
+msgid "No matching supplier parts found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:437
+msgid "Multiple matching supplier parts found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
+msgid "Matched supplier part"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:525
+msgid "Item has already been received"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:563
+msgid "No match for supplier barcode"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:612
+msgid "Multiple matching line items found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:615
+msgid "No matching line item found"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
+msgid "Barcode does not match an existing stock item"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:686
+msgid "Stock item does not match line item"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
+msgid "Insufficient stock available"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:729
+msgid "Stock item allocated to sales order"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:732
+msgid "Not enough information"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:172 plugin/base/barcodes/mixins.py:204
+msgid "Found multiple matching supplier parts for barcode"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:222
+#, python-brace-format
+msgid "Found multiple purchase orders matching '{order}'"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:226
+#, python-brace-format
+msgid "No matching purchase order for '{order}'"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:231
+msgid "Purchase order does not match supplier"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:467
+msgid "Failed to find pending line item for supplier part"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:498
+msgid "Further information required to receive line item"
+msgstr ""
+
+#: plugin/base/barcodes/mixins.py:506
+msgid "Received purchase order line item"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:48
+msgid "Scanned barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:57
+msgid "Model name to generate barcode for"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:62
+msgid "Primary key of model object to generate barcode for"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:132
+msgid "Purchase Order to allocate items against"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:138
+msgid "Purchase order is not pending"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:156
+msgid "PurchaseOrder to receive items against"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:162
+msgid "Purchase order has not been placed"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:170
+msgid "Location to receive items into"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:176
+msgid "Cannot select a structural location"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:190
+msgid "Sales Order to allocate items against"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:196
+msgid "Sales order is not pending"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:204
+msgid "Sales order line item to allocate items against"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:211
+msgid "Sales order shipment to allocate items against"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:217
+msgid "Shipment has already been delivered"
+msgstr ""
+
+#: plugin/base/barcodes/serializers.py:222
+msgid "Quantity to allocate"
+msgstr ""
+
+#: plugin/base/label/label.py:39 templates/js/translated/label.js:148
+msgid "Label printing failed"
+msgstr ""
+
+#: plugin/base/label/mixins.py:54
+msgid "Error rendering label to PDF"
+msgstr ""
+
+#: plugin/base/label/mixins.py:68
+msgid "Error rendering label to HTML"
+msgstr ""
+
+#: plugin/base/label/mixins.py:149
+msgid "No items provided to print"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:27
+msgid "InvenTree Barcodes"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:28
+msgid "Provides native support for barcodes"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:30
+#: plugin/builtin/integration/core_notifications.py:35
+#: plugin/builtin/integration/currency_exchange.py:21
+#: plugin/builtin/labels/inventree_label.py:22
+#: plugin/builtin/labels/inventree_machine.py:64
+#: plugin/builtin/labels/label_sheet.py:63
+#: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21
+#: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21
+msgid "InvenTree contributors"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:34
+msgid "Internal Barcode Format"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:35
+msgid "Select an internal barcode format"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:37
+msgid "JSON barcodes (human readable)"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:38
+msgid "Short barcodes (space optimized)"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:43
+msgid "Short Barcode Prefix"
+msgstr ""
+
+#: plugin/builtin/barcodes/inventree_barcode.py:45
+msgid "Customize the prefix used for short barcodes, may be useful for environments with multiple InvenTree instances"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:34
+msgid "InvenTree Notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:36
+msgid "Integrated outgoing notification methods"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:41
+#: plugin/builtin/integration/core_notifications.py:80
+msgid "Enable email notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:42
+#: plugin/builtin/integration/core_notifications.py:81
+msgid "Allow sending of emails for event notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:47
+msgid "Enable slack notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:49
+msgid "Allow sending of slack channel messages for event notifications"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:55
+msgid "Slack incoming webhook url"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:56
+msgid "URL that is used to send messages to a slack channel"
+msgstr ""
+
+#: plugin/builtin/integration/core_notifications.py:166
+msgid "Open link"
+msgstr ""
+
+#: plugin/builtin/integration/currency_exchange.py:22
+msgid "InvenTree Currency Exchange"
+msgstr ""
+
+#: plugin/builtin/integration/currency_exchange.py:23
+msgid "Default currency exchange integration"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_label.py:19
+msgid "InvenTree PDF label printer"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_label.py:20
+msgid "Provides native support for printing PDF labels"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_label.py:28
+#: plugin/builtin/labels/label_sheet.py:69
+msgid "Debug mode"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_label.py:29
+#: plugin/builtin/labels/label_sheet.py:70
+msgid "Enable debug mode - returns raw HTML instead of PDF"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_machine.py:61
+msgid "InvenTree machine label printer"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_machine.py:62
+msgid "Provides support for printing using a machine"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_machine.py:151
+msgid "last used"
+msgstr ""
+
+#: plugin/builtin/labels/inventree_machine.py:168
+msgid "Options"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:29
+msgid "Page size for the label sheet"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:34
+msgid "Skip Labels"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:35
+msgid "Skip this number of labels when printing label sheets"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:41
+msgid "Border"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:42
+msgid "Print a border around each label"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
+msgid "Landscape"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:48
+msgid "Print the label sheet in landscape mode"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:60
+msgid "InvenTree Label Sheet Printer"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:61
+msgid "Arrays multiple labels onto a single sheet"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:106
+msgid "Label is too large for page size"
+msgstr ""
+
+#: plugin/builtin/labels/label_sheet.py:140
+msgid "No labels were generated"
+msgstr ""
+
+#: plugin/builtin/suppliers/digikey.py:16
+msgid "Supplier Integration - DigiKey"
+msgstr ""
+
+#: plugin/builtin/suppliers/digikey.py:17
+msgid "Provides support for scanning DigiKey barcodes"
+msgstr ""
+
+#: plugin/builtin/suppliers/digikey.py:26
+msgid "The Supplier which acts as 'DigiKey'"
+msgstr ""
+
+#: plugin/builtin/suppliers/lcsc.py:18
+msgid "Supplier Integration - LCSC"
+msgstr ""
+
+#: plugin/builtin/suppliers/lcsc.py:19
+msgid "Provides support for scanning LCSC barcodes"
+msgstr ""
+
+#: plugin/builtin/suppliers/lcsc.py:27
+msgid "The Supplier which acts as 'LCSC'"
+msgstr ""
+
+#: plugin/builtin/suppliers/mouser.py:16
+msgid "Supplier Integration - Mouser"
+msgstr ""
+
+#: plugin/builtin/suppliers/mouser.py:17
+msgid "Provides support for scanning Mouser barcodes"
+msgstr ""
+
+#: plugin/builtin/suppliers/mouser.py:25
+msgid "The Supplier which acts as 'Mouser'"
+msgstr ""
+
+#: plugin/builtin/suppliers/tme.py:18
+msgid "Supplier Integration - TME"
+msgstr ""
+
+#: plugin/builtin/suppliers/tme.py:19
+msgid "Provides support for scanning TME barcodes"
+msgstr ""
+
+#: plugin/builtin/suppliers/tme.py:27
+msgid "The Supplier which acts as 'TME'"
+msgstr ""
+
+#: plugin/installer.py:199 plugin/installer.py:282
+msgid "Only staff users can administer plugins"
+msgstr ""
+
+#: plugin/installer.py:202
+msgid "Plugin installation is disabled"
+msgstr ""
+
+#: plugin/installer.py:246
+msgid "Installed plugin successfully"
+msgstr ""
+
+#: plugin/installer.py:251
+#, python-brace-format
+msgid "Installed plugin into {path}"
+msgstr ""
+
+#: plugin/installer.py:273
+msgid "Plugin was not found in registry"
+msgstr ""
+
+#: plugin/installer.py:276
+msgid "Plugin is not a packaged plugin"
+msgstr ""
+
+#: plugin/installer.py:279
+msgid "Plugin package name not found"
+msgstr ""
+
+#: plugin/installer.py:299
+msgid "Plugin uninstalling is disabled"
+msgstr ""
+
+#: plugin/installer.py:303
+msgid "Plugin cannot be uninstalled as it is currently active"
+msgstr ""
+
+#: plugin/installer.py:316
+msgid "Uninstalled plugin successfully"
+msgstr ""
+
+#: plugin/models.py:36
+msgid "Plugin Configuration"
+msgstr ""
+
+#: plugin/models.py:37
+msgid "Plugin Configurations"
+msgstr ""
+
+#: plugin/models.py:44
+msgid "Key of plugin"
+msgstr ""
+
+#: plugin/models.py:52
+msgid "PluginName of the plugin"
+msgstr ""
+
+#: plugin/models.py:59 plugin/serializers.py:115
+msgid "Package Name"
+msgstr ""
+
+#: plugin/models.py:61
+msgid "Name of the installed package, if the plugin was installed via PIP"
+msgstr ""
+
+#: plugin/models.py:66
+msgid "Is the plugin active"
+msgstr ""
+
+#: plugin/models.py:157 templates/js/translated/table_filters.js:377
+#: templates/js/translated/table_filters.js:525
+msgid "Installed"
+msgstr ""
+
+#: plugin/models.py:166
+msgid "Sample plugin"
+msgstr ""
+
+#: plugin/models.py:174
+msgid "Builtin Plugin"
+msgstr ""
+
+#: plugin/models.py:182
+msgid "Package Plugin"
+msgstr ""
+
+#: plugin/models.py:259 report/models.py:482
+#: templates/InvenTree/settings/plugin_settings.html:9
+#: templates/js/translated/plugin.js:51
+msgid "Plugin"
+msgstr ""
+
+#: plugin/models.py:306
+msgid "Method"
+msgstr ""
+
+#: plugin/plugin.py:275
+msgid "No author found"
+msgstr ""
+
+#: plugin/registry.py:534
+#, python-brace-format
+msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}"
+msgstr ""
+
+#: plugin/registry.py:537
+#, python-brace-format
+msgid "Plugin requires at least version {v}"
+msgstr ""
+
+#: plugin/registry.py:539
+#, python-brace-format
+msgid "Plugin requires at most version {v}"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:52
+msgid "Enable PO"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:53
+msgid "Enable PO functionality in InvenTree interface"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:58
+msgid "API Key"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:59
+msgid "Key required for accessing external API"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:63
+msgid "Numerical"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:64
+msgid "A numerical setting"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:69
+msgid "Choice Setting"
+msgstr ""
+
+#: plugin/samples/integration/sample.py:70
+msgid "A setting with multiple choices"
+msgstr ""
+
+#: plugin/samples/integration/sample_currency_exchange.py:15
+msgid "Sample currency exchange plugin"
+msgstr ""
+
+#: plugin/samples/integration/sample_currency_exchange.py:18
+msgid "InvenTree Contributors"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr ""
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
+msgid "Source for the package - this can be a custom registry or a VCS path"
+msgstr ""
+
+#: plugin/serializers.py:117
+msgid "Name for the Plugin Package - can also contain a version indicator"
+msgstr ""
+
+#: plugin/serializers.py:124
+#: templates/InvenTree/settings/plugin_settings.html:42
+#: templates/js/translated/plugin.js:86
+msgid "Version"
+msgstr ""
+
+#: plugin/serializers.py:126
+msgid "Version specifier for the plugin. Leave blank for latest version."
+msgstr ""
+
+#: plugin/serializers.py:131
+msgid "Confirm plugin installation"
+msgstr ""
+
+#: plugin/serializers.py:133
+msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
+msgstr ""
+
+#: plugin/serializers.py:146
+msgid "Installation not confirmed"
+msgstr ""
+
+#: plugin/serializers.py:148
+msgid "Either packagename of URL must be provided"
+msgstr ""
+
+#: plugin/serializers.py:184
+msgid "Full reload"
+msgstr ""
+
+#: plugin/serializers.py:185
+msgid "Perform a full reload of the plugin registry"
+msgstr ""
+
+#: plugin/serializers.py:191
+msgid "Force reload"
+msgstr ""
+
+#: plugin/serializers.py:193
+msgid "Force a reload of the plugin registry, even if it is already loaded"
+msgstr ""
+
+#: plugin/serializers.py:200
+msgid "Collect plugins"
+msgstr ""
+
+#: plugin/serializers.py:201
+msgid "Collect plugins and add them to the registry"
+msgstr ""
+
+#: plugin/serializers.py:228
+msgid "Activate Plugin"
+msgstr ""
+
+#: plugin/serializers.py:229
+msgid "Activate this plugin"
+msgstr ""
+
+#: plugin/serializers.py:249
+msgid "Delete configuration"
+msgstr ""
+
+#: plugin/serializers.py:250
+msgid "Delete the plugin configuration from the database"
+msgstr ""
+
+#: report/api.py:88
+msgid "No valid objects provided to template"
+msgstr ""
+
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
+#: templates/js/translated/return_order.js:353
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
+msgid "Items"
+msgstr ""
+
+#: report/api.py:180
+msgid "Plugin not found"
+msgstr ""
+
+#: report/api.py:182
+msgid "Plugin is not active"
+msgstr ""
+
+#: report/api.py:184
+msgid "Plugin does not support label printing"
+msgstr ""
+
+#: report/api.py:233
+msgid "Invalid label dimensions"
+msgstr ""
+
+#: report/api.py:248 report/api.py:329
+msgid "No valid items provided to template"
+msgstr ""
+
+#: report/api.py:283
+msgid "Error printing label"
+msgstr ""
+
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
+#, python-brace-format
+msgid "Template file '{template}' is missing or does not exist"
+msgstr ""
+
+#: report/helpers.py:43
+msgid "A4"
+msgstr ""
+
+#: report/helpers.py:44
+msgid "A3"
+msgstr ""
+
+#: report/helpers.py:45
+msgid "Legal"
+msgstr ""
+
+#: report/helpers.py:46
+msgid "Letter"
+msgstr ""
+
+#: report/models.py:118
+msgid "Template file with this name already exists"
+msgstr ""
+
+#: report/models.py:150
+msgid "Template name"
+msgstr ""
+
+#: report/models.py:156
+msgid "Template description"
+msgstr ""
+
+#: report/models.py:162
+msgid "Revision number (auto-increments)"
+msgstr ""
+
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
+msgid "Filename Pattern"
+msgstr ""
+
+#: report/models.py:211
+msgid "Pattern for generating filenames"
+msgstr ""
+
+#: report/models.py:216
+msgid "Template is enabled"
+msgstr ""
+
+#: report/models.py:222
+msgid "Target model type for template"
+msgstr ""
+
+#: report/models.py:242
+msgid "Filters"
+msgstr ""
+
+#: report/models.py:243
+msgid "Template query filters (comma-separated list of key=value pairs)"
+msgstr ""
+
+#: report/models.py:302 report/models.py:369
+msgid "Template file"
+msgstr ""
+
+#: report/models.py:310
+msgid "Page size for PDF reports"
+msgstr ""
+
+#: report/models.py:316
+msgid "Render report in landscape orientation"
+msgstr ""
+
+#: report/models.py:375
+msgid "Width [mm]"
+msgstr ""
+
+#: report/models.py:376
+msgid "Label width, specified in mm"
+msgstr ""
+
+#: report/models.py:382
+msgid "Height [mm]"
+msgstr ""
+
+#: report/models.py:383
+msgid "Label height, specified in mm"
+msgstr ""
+
+#: report/models.py:446
+msgid "Number of items to process"
+msgstr ""
+
+#: report/models.py:452
+msgid "Report generation is complete"
+msgstr ""
+
+#: report/models.py:456 templates/js/translated/build.js:2352
+msgid "Progress"
+msgstr ""
+
+#: report/models.py:456
+msgid "Report generation progress"
+msgstr ""
+
+#: report/models.py:464
+msgid "Report Template"
+msgstr ""
+
+#: report/models.py:471 report/models.py:494
+msgid "Output File"
+msgstr ""
+
+#: report/models.py:472 report/models.py:495
+msgid "Generated output file"
+msgstr ""
+
+#: report/models.py:483
+msgid "Label output plugin"
+msgstr ""
+
+#: report/models.py:487
+msgid "Label Template"
+msgstr ""
+
+#: report/models.py:510
+msgid "Snippet"
+msgstr ""
+
+#: report/models.py:511
+msgid "Report snippet file"
+msgstr ""
+
+#: report/models.py:518
+msgid "Snippet file description"
+msgstr ""
+
+#: report/models.py:536
+msgid "Asset"
+msgstr ""
+
+#: report/models.py:537
+msgid "Report asset file"
+msgstr ""
+
+#: report/models.py:544
+msgid "Asset file description"
+msgstr ""
+
+#: report/serializers.py:92
+msgid "Select report template"
+msgstr ""
+
+#: report/serializers.py:100 report/serializers.py:150
+msgid "List of item primary keys to include in the report"
+msgstr ""
+
+#: report/serializers.py:133
+msgid "Select label template"
+msgstr ""
+
+#: report/serializers.py:141
+msgid "Printing Plugin"
+msgstr ""
+
+#: report/serializers.py:142
+msgid "Select plugin to use for label printing"
+msgstr ""
+
+#: report/templates/label/part_label.html:31
+#: report/templates/label/stockitem_qr.html:21
+#: report/templates/label/stocklocation_qr.html:20
+#: templates/allauth_2fa/setup.html:18
+msgid "QR Code"
+msgstr ""
+
+#: report/templates/label/part_label_code128.html:31
+#: report/templates/label/stocklocation_qr_and_text.html:31
+#: templates/qr_code.html:7
+msgid "QR code"
+msgstr ""
+
+#: report/templates/report/inventree_bill_of_materials_report.html:133
+msgid "Materials needed"
+msgstr ""
+
+#: report/templates/report/inventree_build_order_report.html:146
+msgid "Required For"
+msgstr ""
+
+#: report/templates/report/inventree_purchase_order_report.html:15
+msgid "Supplier was deleted"
+msgstr ""
+
+#: report/templates/report/inventree_purchase_order_report.html:30
+#: report/templates/report/inventree_sales_order_report.html:30
+#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
+#: templates/js/translated/pricing.js:596
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
+msgid "Unit Price"
+msgstr ""
+
+#: report/templates/report/inventree_purchase_order_report.html:55
+#: report/templates/report/inventree_return_order_report.html:48
+#: report/templates/report/inventree_sales_order_report.html:55
+msgid "Extra Line Items"
+msgstr ""
+
+#: report/templates/report/inventree_purchase_order_report.html:72
+#: report/templates/report/inventree_sales_order_report.html:72
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
+#: templates/test_statistics_table.html:8
+#: templates/test_statistics_table.html:19
+msgid "Total"
+msgstr ""
+
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
+#: report/templates/report/inventree_stock_location_report.html:97
+msgid "Stock location items"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:21
+msgid "Stock Item Test Report"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:97
+msgid "Test Results"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:102
+#: templates/js/translated/stock.js:1580
+msgid "Test"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
+msgid "Pass"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
+msgid "Fail"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:138
+msgid "No result (required)"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
+msgid "No result"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:153
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
+msgid "Installed Items"
+msgstr ""
+
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
+#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
+#: templates/js/translated/stock.js:3195
+msgid "Serial"
+msgstr ""
+
+#: report/templatetags/report.py:98
+msgid "Asset file does not exist"
+msgstr ""
+
+#: report/templatetags/report.py:154 report/templatetags/report.py:233
+msgid "Image file not found"
+msgstr ""
+
+#: report/templatetags/report.py:258
+msgid "part_image tag requires a Part instance"
+msgstr ""
+
+#: report/templatetags/report.py:299
+msgid "company_image tag requires a Company instance"
+msgstr ""
+
+#: stock/admin.py:51 stock/admin.py:172
+msgid "Location ID"
+msgstr ""
+
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
+msgid "Location Path"
+msgstr ""
+
+#: stock/admin.py:149
+msgid "Stock Item ID"
+msgstr ""
+
+#: stock/admin.py:168
+msgid "Status Code"
+msgstr ""
+
+#: stock/admin.py:180
+msgid "Supplier Part ID"
+msgstr ""
+
+#: stock/admin.py:185
+msgid "Supplier Part SKU"
+msgstr ""
+
+#: stock/admin.py:190
+msgid "Supplier ID"
+msgstr ""
+
+#: stock/admin.py:201
+msgid "Customer ID"
+msgstr ""
+
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
+msgid "Installed In"
+msgstr ""
+
+#: stock/admin.py:211
+msgid "Build ID"
+msgstr ""
+
+#: stock/admin.py:221
+msgid "Sales Order ID"
+msgstr ""
+
+#: stock/admin.py:226
+msgid "Purchase Order ID"
+msgstr ""
+
+#: stock/admin.py:241
+msgid "Review Needed"
+msgstr ""
+
+#: stock/admin.py:246
+msgid "Delete on Deplete"
+msgstr ""
+
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
+msgid "Expiry Date"
+msgstr ""
+
+#: stock/api.py:310
+msgid "Filter by location depth"
+msgstr ""
+
+#: stock/api.py:330
+msgid "Filter by top-level locations"
+msgstr ""
+
+#: stock/api.py:345
+msgid "Include sub-locations in filtered results"
+msgstr ""
+
+#: stock/api.py:366 stock/serializers.py:1217
+msgid "Parent Location"
+msgstr ""
+
+#: stock/api.py:367
+msgid "Filter by parent location"
+msgstr ""
+
+#: stock/api.py:615 templates/js/translated/table_filters.js:434
+msgid "External Location"
+msgstr ""
+
+#: stock/api.py:803
+msgid "Part Tree"
+msgstr ""
+
+#: stock/api.py:833
+msgid "Expiry date before"
+msgstr ""
+
+#: stock/api.py:837
+msgid "Expiry date after"
+msgstr ""
+
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
+#: templates/js/translated/table_filters.js:448
+msgid "Stale"
+msgstr ""
+
+#: stock/api.py:927
+msgid "Quantity is required"
+msgstr ""
+
+#: stock/api.py:932
+msgid "Valid part must be supplied"
+msgstr ""
+
+#: stock/api.py:959
+msgid "The given supplier part does not exist"
+msgstr ""
+
+#: stock/api.py:969
+msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
+msgstr ""
+
+#: stock/api.py:996
+msgid "Serial numbers cannot be supplied for a non-trackable part"
+msgstr ""
+
+#: stock/models.py:70
+msgid "Stock Location type"
+msgstr ""
+
+#: stock/models.py:71
+msgid "Stock Location types"
+msgstr ""
+
+#: stock/models.py:97
+msgid "Default icon for all locations that have no icon set (optional)"
+msgstr ""
+
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
+#: stock/templates/stock/stock_app_base.html:8
+msgid "Stock Location"
+msgstr ""
+
+#: stock/models.py:138 stock/templates/stock/location.html:184
+#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
+#: users/models.py:205
+msgid "Stock Locations"
+msgstr ""
+
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
+msgid "Owner"
+msgstr ""
+
+#: stock/models.py:187 stock/models.py:1046
+msgid "Select Owner"
+msgstr ""
+
+#: stock/models.py:195
+msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
+msgstr ""
+
+#: stock/models.py:202 templates/js/translated/stock.js:2866
+#: templates/js/translated/table_filters.js:250
+msgid "External"
+msgstr ""
+
+#: stock/models.py:203
+msgid "This is an external stock location"
+msgstr ""
+
+#: stock/models.py:209 templates/js/translated/stock.js:2875
+#: templates/js/translated/table_filters.js:253
+msgid "Location type"
+msgstr ""
+
+#: stock/models.py:213
+msgid "Stock location type of this location"
+msgstr ""
+
+#: stock/models.py:285
+msgid "You cannot make this stock location structural because some stock items are already located into it!"
+msgstr ""
+
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
+msgid "Stock items cannot be located into structural stock locations!"
+msgstr ""
+
+#: stock/models.py:768 stock/serializers.py:492
+msgid "Stock item cannot be created for virtual parts"
+msgstr ""
+
+#: stock/models.py:785
+#, python-brace-format
+msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
+msgstr ""
+
+#: stock/models.py:795 stock/models.py:808
+msgid "Quantity must be 1 for item with a serial number"
+msgstr ""
+
+#: stock/models.py:798
+msgid "Serial number cannot be set if quantity greater than 1"
+msgstr ""
+
+#: stock/models.py:820
+msgid "Item cannot belong to itself"
+msgstr ""
+
+#: stock/models.py:825
+msgid "Item must have a build reference if is_building=True"
+msgstr ""
+
+#: stock/models.py:838
+msgid "Build reference does not point to the same part object"
+msgstr ""
+
+#: stock/models.py:854
+msgid "Parent Stock Item"
+msgstr ""
+
+#: stock/models.py:866
+msgid "Base part"
+msgstr ""
+
+#: stock/models.py:876
+msgid "Select a matching supplier part for this stock item"
+msgstr ""
+
+#: stock/models.py:888
+msgid "Where is this stock item located?"
+msgstr ""
+
+#: stock/models.py:896 stock/serializers.py:1611
+msgid "Packaging this stock item is stored in"
+msgstr ""
+
+#: stock/models.py:907
+msgid "Is this item installed in another item?"
+msgstr ""
+
+#: stock/models.py:926
+msgid "Serial number for this item"
+msgstr ""
+
+#: stock/models.py:940 stock/serializers.py:1594
+msgid "Batch code for this stock item"
+msgstr ""
+
+#: stock/models.py:945
+msgid "Stock Quantity"
+msgstr ""
+
+#: stock/models.py:955
+msgid "Source Build"
+msgstr ""
+
+#: stock/models.py:958
+msgid "Build for this stock item"
+msgstr ""
+
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
+msgid "Consumed By"
+msgstr ""
+
+#: stock/models.py:968
+msgid "Build order which consumed this stock item"
+msgstr ""
+
+#: stock/models.py:977
+msgid "Source Purchase Order"
+msgstr ""
+
+#: stock/models.py:981
+msgid "Purchase order for this stock item"
+msgstr ""
+
+#: stock/models.py:987
+msgid "Destination Sales Order"
+msgstr ""
+
+#: stock/models.py:998
+msgid "Expiry date for stock item. Stock will be considered expired after this date"
+msgstr ""
+
+#: stock/models.py:1016
+msgid "Delete on deplete"
+msgstr ""
+
+#: stock/models.py:1017
+msgid "Delete this Stock Item when stock is depleted"
+msgstr ""
+
+#: stock/models.py:1037
+msgid "Single unit purchase price at time of purchase"
+msgstr ""
+
+#: stock/models.py:1068
+msgid "Converted to part"
+msgstr ""
+
+#: stock/models.py:1600
+msgid "Part is not set as trackable"
+msgstr ""
+
+#: stock/models.py:1606
+msgid "Quantity must be integer"
+msgstr ""
+
+#: stock/models.py:1614
+#, python-brace-format
+msgid "Quantity must not exceed available stock quantity ({self.quantity})"
+msgstr ""
+
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
+
+#: stock/models.py:1625
+msgid "Quantity does not match serial numbers"
+msgstr ""
+
+#: stock/models.py:1747 stock/models.py:2563
+msgid "Test template does not exist"
+msgstr ""
+
+#: stock/models.py:1765
+msgid "Stock item has been assigned to a sales order"
+msgstr ""
+
+#: stock/models.py:1769
+msgid "Stock item is installed in another item"
+msgstr ""
+
+#: stock/models.py:1772
+msgid "Stock item contains other items"
+msgstr ""
+
+#: stock/models.py:1775
+msgid "Stock item has been assigned to a customer"
+msgstr ""
+
+#: stock/models.py:1778
+msgid "Stock item is currently in production"
+msgstr ""
+
+#: stock/models.py:1781
+msgid "Serialized stock cannot be merged"
+msgstr ""
+
+#: stock/models.py:1788 stock/serializers.py:1500
+msgid "Duplicate stock items"
+msgstr ""
+
+#: stock/models.py:1792
+msgid "Stock items must refer to the same part"
+msgstr ""
+
+#: stock/models.py:1800
+msgid "Stock items must refer to the same supplier part"
+msgstr ""
+
+#: stock/models.py:1805
+msgid "Stock status codes must match"
+msgstr ""
+
+#: stock/models.py:2066
+msgid "StockItem cannot be moved as it is not in stock"
+msgstr ""
+
+#: stock/models.py:2462
+msgid "Stock Item Tracking"
+msgstr ""
+
+#: stock/models.py:2495
+msgid "Entry notes"
+msgstr ""
+
+#: stock/models.py:2535
+msgid "Stock Item Test Result"
+msgstr ""
+
+#: stock/models.py:2566
+msgid "Value must be provided for this test"
+msgstr ""
+
+#: stock/models.py:2570
+msgid "Attachment must be uploaded for this test"
+msgstr ""
+
+#: stock/models.py:2575
+msgid "Invalid value for this test"
+msgstr ""
+
+#: stock/models.py:2660
+msgid "Test result"
+msgstr ""
+
+#: stock/models.py:2667
+msgid "Test output value"
+msgstr ""
+
+#: stock/models.py:2675 stock/serializers.py:245
+msgid "Test result attachment"
+msgstr ""
+
+#: stock/models.py:2679
+msgid "Test notes"
+msgstr ""
+
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
+msgid "Test station"
+msgstr ""
+
+#: stock/models.py:2688
+msgid "The identifier of the test station where the test was performed"
+msgstr ""
+
+#: stock/models.py:2694
+msgid "Started"
+msgstr ""
+
+#: stock/models.py:2695
+msgid "The timestamp of the test start"
+msgstr ""
+
+#: stock/models.py:2701
+msgid "Finished"
+msgstr ""
+
+#: stock/models.py:2702
+msgid "The timestamp of the test finish"
+msgstr ""
+
+#: stock/serializers.py:77
+msgid "Generated batch code"
+msgstr ""
+
+#: stock/serializers.py:86
+msgid "Select build order"
+msgstr ""
+
+#: stock/serializers.py:95
+msgid "Select stock item to generate batch code for"
+msgstr ""
+
+#: stock/serializers.py:104
+msgid "Select location to generate batch code for"
+msgstr ""
+
+#: stock/serializers.py:113
+msgid "Select part to generate batch code for"
+msgstr ""
+
+#: stock/serializers.py:122
+msgid "Select purchase order"
+msgstr ""
+
+#: stock/serializers.py:129
+msgid "Enter quantity for batch code"
+msgstr ""
+
+#: stock/serializers.py:152
+msgid "Generated serial number"
+msgstr ""
+
+#: stock/serializers.py:161
+msgid "Select part to generate serial number for"
+msgstr ""
+
+#: stock/serializers.py:169
+msgid "Quantity of serial numbers to generate"
+msgstr ""
+
+#: stock/serializers.py:234
+msgid "Test template for this result"
+msgstr ""
+
+#: stock/serializers.py:258
+msgid "Template ID or test name must be provided"
+msgstr ""
+
+#: stock/serializers.py:290
+msgid "The test finished time cannot be earlier than the test started time"
+msgstr ""
+
+#: stock/serializers.py:327
+msgid "Serial number is too large"
+msgstr ""
+
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
+msgid "Parent Item"
+msgstr ""
+
+#: stock/serializers.py:463
+msgid "Parent stock item"
+msgstr ""
+
+#: stock/serializers.py:484
+msgid "Use pack size when adding: the quantity defined is the number of packs"
+msgstr ""
+
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
+#: templates/js/translated/table_filters.js:442 users/models.py:174
+msgid "Expired"
+msgstr ""
+
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
+msgid "Child Items"
+msgstr ""
+
+#: stock/serializers.py:633
+msgid "Tracking Items"
+msgstr ""
+
+#: stock/serializers.py:639
+msgid "Purchase price of this stock item, per unit or pack"
+msgstr ""
+
+#: stock/serializers.py:658
+msgid "Minimum Pricing"
+msgstr ""
+
+#: stock/serializers.py:664
+msgid "Maximum Pricing"
+msgstr ""
+
+#: stock/serializers.py:688
+msgid "Enter number of stock items to serialize"
+msgstr ""
+
+#: stock/serializers.py:701
+#, python-brace-format
+msgid "Quantity must not exceed available stock quantity ({q})"
+msgstr ""
+
+#: stock/serializers.py:708
+msgid "Enter serial numbers for new items"
+msgstr ""
+
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
+msgid "Destination stock location"
+msgstr ""
+
+#: stock/serializers.py:726
+msgid "Optional note field"
+msgstr ""
+
+#: stock/serializers.py:736
+msgid "Serial numbers cannot be assigned to this part"
+msgstr ""
+
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
+msgid "Select stock item to install"
+msgstr ""
+
+#: stock/serializers.py:802
+msgid "Quantity to Install"
+msgstr ""
+
+#: stock/serializers.py:803
+msgid "Enter the quantity of items to install"
+msgstr ""
+
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
+msgid "Add transaction note (optional)"
+msgstr ""
+
+#: stock/serializers.py:816
+msgid "Quantity to install must be at least 1"
+msgstr ""
+
+#: stock/serializers.py:824
+msgid "Stock item is unavailable"
+msgstr ""
+
+#: stock/serializers.py:835
+msgid "Selected part is not in the Bill of Materials"
+msgstr ""
+
+#: stock/serializers.py:848
+msgid "Quantity to install must not exceed available quantity"
+msgstr ""
+
+#: stock/serializers.py:883
+msgid "Destination location for uninstalled item"
+msgstr ""
+
+#: stock/serializers.py:934
+msgid "Unsupported statistic type: "
+msgstr ""
+
+#: stock/serializers.py:948
+msgid "Select part to convert stock item into"
+msgstr ""
+
+#: stock/serializers.py:961
+msgid "Selected part is not a valid option for conversion"
+msgstr ""
+
+#: stock/serializers.py:978
+msgid "Cannot convert stock item with assigned SupplierPart"
+msgstr ""
+
+#: stock/serializers.py:1009
+msgid "Destination location for returned item"
+msgstr ""
+
+#: stock/serializers.py:1046
+msgid "Select stock items to change status"
+msgstr ""
+
+#: stock/serializers.py:1052
+msgid "No stock items selected"
+msgstr ""
+
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
+#: stock/templates/stock/location_sidebar.html:5
+msgid "Sublocations"
+msgstr ""
+
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
+msgid "Parent stock location"
+msgstr ""
+
+#: stock/serializers.py:1329
+msgid "Part must be salable"
+msgstr ""
+
+#: stock/serializers.py:1333
+msgid "Item is allocated to a sales order"
+msgstr ""
+
+#: stock/serializers.py:1337
+msgid "Item is allocated to a build order"
+msgstr ""
+
+#: stock/serializers.py:1361
+msgid "Customer to assign stock items"
+msgstr ""
+
+#: stock/serializers.py:1367
+msgid "Selected company is not a customer"
+msgstr ""
+
+#: stock/serializers.py:1375
+msgid "Stock assignment notes"
+msgstr ""
+
+#: stock/serializers.py:1385 stock/serializers.py:1639
+msgid "A list of stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:1464
+msgid "Stock merging notes"
+msgstr ""
+
+#: stock/serializers.py:1469
+msgid "Allow mismatched suppliers"
+msgstr ""
+
+#: stock/serializers.py:1470
+msgid "Allow stock items with different supplier parts to be merged"
+msgstr ""
+
+#: stock/serializers.py:1475
+msgid "Allow mismatched status"
+msgstr ""
+
+#: stock/serializers.py:1476
+msgid "Allow stock items with different status codes to be merged"
+msgstr ""
+
+#: stock/serializers.py:1486
+msgid "At least two stock items must be provided"
+msgstr ""
+
+#: stock/serializers.py:1553
+msgid "No Change"
+msgstr ""
+
+#: stock/serializers.py:1582
+msgid "StockItem primary key value"
+msgstr ""
+
+#: stock/serializers.py:1601
+msgid "Stock item status code"
+msgstr ""
+
+#: stock/serializers.py:1629
+msgid "Stock transaction notes"
+msgstr ""
+
+#: stock/status_codes.py:11
+msgid "OK"
+msgstr ""
+
+#: stock/status_codes.py:12
+msgid "Attention needed"
+msgstr ""
+
+#: stock/status_codes.py:13
+msgid "Damaged"
+msgstr ""
+
+#: stock/status_codes.py:14
+msgid "Destroyed"
+msgstr ""
+
+#: stock/status_codes.py:15
+msgid "Rejected"
+msgstr ""
+
+#: stock/status_codes.py:19
+msgid "Quarantined"
+msgstr ""
+
+#: stock/status_codes.py:44
+msgid "Legacy stock tracking entry"
+msgstr ""
+
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
+msgid "Stock item created"
+msgstr ""
+
+#: stock/status_codes.py:49
+msgid "Edited stock item"
+msgstr ""
+
+#: stock/status_codes.py:50
+msgid "Assigned serial number"
+msgstr ""
+
+#: stock/status_codes.py:53
+msgid "Stock counted"
+msgstr ""
+
+#: stock/status_codes.py:54
+msgid "Stock manually added"
+msgstr ""
+
+#: stock/status_codes.py:55
+msgid "Stock manually removed"
+msgstr ""
+
+#: stock/status_codes.py:58
+msgid "Location changed"
+msgstr ""
+
+#: stock/status_codes.py:59
+msgid "Stock updated"
+msgstr ""
+
+#: stock/status_codes.py:62
+msgid "Installed into assembly"
+msgstr ""
+
+#: stock/status_codes.py:63
+msgid "Removed from assembly"
+msgstr ""
+
+#: stock/status_codes.py:65
+msgid "Installed component item"
+msgstr ""
+
+#: stock/status_codes.py:66
+msgid "Removed component item"
+msgstr ""
+
+#: stock/status_codes.py:69
+msgid "Split from parent item"
+msgstr ""
+
+#: stock/status_codes.py:70
+msgid "Split child item"
+msgstr ""
+
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
+msgid "Merged stock items"
+msgstr ""
+
+#: stock/status_codes.py:76
+msgid "Converted to variant"
+msgstr ""
+
+#: stock/status_codes.py:79
+msgid "Build order output created"
+msgstr ""
+
+#: stock/status_codes.py:80
+msgid "Build order output completed"
+msgstr ""
+
+#: stock/status_codes.py:81
+msgid "Build order output rejected"
+msgstr ""
+
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
+msgid "Consumed by build order"
+msgstr ""
+
+#: stock/status_codes.py:85
+msgid "Shipped against Sales Order"
+msgstr ""
+
+#: stock/status_codes.py:88
+msgid "Received against Purchase Order"
+msgstr ""
+
+#: stock/status_codes.py:91
+msgid "Returned against Return Order"
+msgstr ""
+
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
+msgid "Sent to customer"
+msgstr ""
+
+#: stock/status_codes.py:95
+msgid "Returned from customer"
+msgstr ""
+
+#: stock/templates/stock/item.html:17
+msgid "Stock Tracking Information"
+msgstr ""
+
+#: stock/templates/stock/item.html:63
+msgid "Child Stock Items"
+msgstr ""
+
+#: stock/templates/stock/item.html:72
+msgid "This stock item does not have any child items"
+msgstr ""
+
+#: stock/templates/stock/item.html:81
+#: stock/templates/stock/stock_sidebar.html:12
+msgid "Test Data"
+msgstr ""
+
+#: stock/templates/stock/item.html:85
+msgid "Test Report"
+msgstr ""
+
+#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:276
+msgid "Delete Test Data"
+msgstr ""
+
+#: stock/templates/stock/item.html:93
+msgid "Add Test Data"
+msgstr ""
+
+#: stock/templates/stock/item.html:125
+msgid "Stock Item Notes"
+msgstr ""
+
+#: stock/templates/stock/item.html:140
+msgid "Installed Stock Items"
+msgstr ""
+
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
+msgid "Install Stock Item"
+msgstr ""
+
+#: stock/templates/stock/item.html:264
+msgid "Delete all test results for this stock item"
+msgstr ""
+
+#: stock/templates/stock/item.html:294 templates/js/translated/stock.js:1786
+msgid "Add Test Result"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:34
+msgid "Locate stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:52
+msgid "Scan to Location"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:59
+#: stock/templates/stock/location.html:68
+#: templates/js/translated/filters.js:434
+msgid "Printing actions"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
+msgid "Stock adjustment actions"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
+msgid "Count stock"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:78
+#: templates/js/translated/stock.js:1891
+msgid "Add stock"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:79
+#: templates/js/translated/stock.js:1900
+msgid "Remove stock"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:82
+msgid "Serialize stock"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
+msgid "Transfer stock"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
+msgid "Assign to customer"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:91
+msgid "Return to stock"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:94
+msgid "Uninstall stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:94
+msgid "Uninstall"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:98
+msgid "Install stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:98
+msgid "Install"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:112
+msgid "Convert to variant"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:115
+msgid "Duplicate stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:117
+msgid "Edit stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:120
+msgid "Delete stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
+msgid "Build"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:208
+msgid "No manufacturer set"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:248
+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:249
+#: stock/templates/stock/location.html:147
+msgid "Read only"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:262
+msgid "This stock item is unavailable"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:268
+msgid "This stock item is in production and cannot be edited."
+msgstr ""
+
+#: stock/templates/stock/item_base.html:269
+msgid "Edit the stock item from the build view."
+msgstr ""
+
+#: stock/templates/stock/item_base.html:284
+msgid "This stock item is allocated to Sales Order"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:292
+msgid "This stock item is allocated to Build Order"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:308
+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:314
+msgid "previous page"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:314
+msgid "Navigate to previous serial number"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:323
+msgid "next page"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:323
+msgid "Navigate to next serial number"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
+msgid "No location set"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:410
+msgid "Tests"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:416
+msgid "This stock item has not passed all required tests"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:434
+#, python-format
+msgid "This StockItem expired on %(item.expiry_date)s"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:436
+#, python-format
+msgid "This StockItem expires on %(item.expiry_date)s"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:452
+msgid "No stocktake performed"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
+msgid "stock item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:524
+msgid "Edit Stock Status"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:533
+msgid "Stock Item QR Code"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:544
+msgid "Link Barcode to Stock Item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:608
+msgid "Select one of the part variants listed below."
+msgstr ""
+
+#: stock/templates/stock/item_base.html:611
+msgid "Warning"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:612
+msgid "This action cannot be easily undone"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:620
+msgid "Convert Stock Item"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:653
+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:36
+msgid "Perform stocktake for this stock location"
+msgstr ""
+
+#: stock/templates/stock/location.html:43
+msgid "Locate stock location"
+msgstr ""
+
+#: stock/templates/stock/location.html:61
+msgid "Scan stock items into this location"
+msgstr ""
+
+#: stock/templates/stock/location.html:61
+msgid "Scan In Stock Items"
+msgstr ""
+
+#: stock/templates/stock/location.html:62
+msgid "Scan stock container into this location"
+msgstr ""
+
+#: stock/templates/stock/location.html:62
+msgid "Scan In Container"
+msgstr ""
+
+#: stock/templates/stock/location.html:73
+msgid "Print Location Report"
+msgstr ""
+
+#: stock/templates/stock/location.html:102
+msgid "Location actions"
+msgstr ""
+
+#: stock/templates/stock/location.html:104
+msgid "Edit location"
+msgstr ""
+
+#: stock/templates/stock/location.html:106
+msgid "Delete location"
+msgstr ""
+
+#: stock/templates/stock/location.html:136
+msgid "Top level stock location"
+msgstr ""
+
+#: stock/templates/stock/location.html:142
+msgid "Location Owner"
+msgstr ""
+
+#: stock/templates/stock/location.html:146
+msgid "You are not in the list of owners of this location. This stock location cannot be edited."
+msgstr ""
+
+#: stock/templates/stock/location.html:174
+msgid "Location Type"
+msgstr ""
+
+#: stock/templates/stock/location.html:224
+msgid "Create new stock location"
+msgstr ""
+
+#: stock/templates/stock/location.html:225
+msgid "New Location"
+msgstr ""
+
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
+msgid "stock location"
+msgstr ""
+
+#: stock/templates/stock/location.html:321
+msgid "Scanned stock container into this location"
+msgstr ""
+
+#: stock/templates/stock/location.html:394
+msgid "Stock Location QR Code"
+msgstr ""
+
+#: stock/templates/stock/location.html:405
+msgid "Link Barcode to Stock Location"
+msgstr ""
+
+#: stock/templates/stock/stock_app_base.html:16
+msgid "Loading..."
+msgstr ""
+
+#: stock/templates/stock/stock_sidebar.html:5
+msgid "Stock Tracking"
+msgstr ""
+
+#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
+msgid "Permission Denied"
+msgstr ""
+
+#: templates/403.html:15
+msgid "You do not have permission to view this page."
+msgstr ""
+
+#: templates/403_csrf.html:11
+msgid "Authentication Failure"
+msgstr ""
+
+#: templates/403_csrf.html:14
+msgid "You have been logged out from InvenTree."
+msgstr ""
+
+#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29
+#: templates/navbar.html:150
+msgid "Login"
+msgstr ""
+
+#: templates/404.html:6 templates/404.html:12
+msgid "Page Not Found"
+msgstr ""
+
+#: templates/404.html:15
+msgid "The requested page does not exist"
+msgstr ""
+
+#: templates/500.html:6 templates/500.html:12
+msgid "Internal Server Error"
+msgstr ""
+
+#: templates/500.html:15
+#, python-format
+msgid "The %(inventree_title)s server raised an internal error"
+msgstr ""
+
+#: templates/500.html:16
+msgid "Refer to the error log in the admin interface for further details"
+msgstr ""
+
+#: templates/503.html:11 templates/503.html:33
+msgid "Site is in Maintenance"
+msgstr ""
+
+#: templates/503.html:39
+msgid "The site is currently in maintenance and should be up again soon!"
+msgstr ""
+
+#: templates/InvenTree/index.html:7
+msgid "Index"
+msgstr ""
+
+#: templates/InvenTree/index.html:39
+msgid "Subscribed Parts"
+msgstr ""
+
+#: templates/InvenTree/index.html:52
+msgid "Subscribed Categories"
+msgstr ""
+
+#: templates/InvenTree/index.html:62
+msgid "Latest Parts"
+msgstr ""
+
+#: templates/InvenTree/index.html:77
+msgid "BOM Waiting Validation"
+msgstr ""
+
+#: templates/InvenTree/index.html:106
+msgid "Recently Updated"
+msgstr ""
+
+#: templates/InvenTree/index.html:134
+msgid "Depleted Stock"
+msgstr ""
+
+#: templates/InvenTree/index.html:148
+msgid "Required for Build Orders"
+msgstr ""
+
+#: templates/InvenTree/index.html:156
+msgid "Expired Stock"
+msgstr ""
+
+#: templates/InvenTree/index.html:172
+msgid "Stale Stock"
+msgstr ""
+
+#: templates/InvenTree/index.html:199
+msgid "Build Orders In Progress"
+msgstr ""
+
+#: templates/InvenTree/index.html:210
+msgid "Overdue Build Orders"
+msgstr ""
+
+#: templates/InvenTree/index.html:230
+msgid "Outstanding Purchase Orders"
+msgstr ""
+
+#: templates/InvenTree/index.html:241
+msgid "Overdue Purchase Orders"
+msgstr ""
+
+#: templates/InvenTree/index.html:262
+msgid "Outstanding Sales Orders"
+msgstr ""
+
+#: templates/InvenTree/index.html:273
+msgid "Overdue Sales Orders"
+msgstr ""
+
+#: templates/InvenTree/index.html:299
+msgid "InvenTree News"
+msgstr ""
+
+#: templates/InvenTree/index.html:301
+msgid "Current News"
+msgstr ""
+
+#: templates/InvenTree/notifications/history.html:9
+msgid "Notification History"
+msgstr ""
+
+#: templates/InvenTree/notifications/history.html:13
+#: templates/InvenTree/notifications/history.html:14
+#: templates/InvenTree/notifications/notifications.html:75
+msgid "Delete Notifications"
+msgstr ""
+
+#: templates/InvenTree/notifications/inbox.html:9
+msgid "Pending Notifications"
+msgstr ""
+
+#: templates/InvenTree/notifications/inbox.html:13
+#: templates/InvenTree/notifications/inbox.html:14
+msgid "Mark all as read"
+msgstr ""
+
+#: templates/InvenTree/notifications/notifications.html:10
+#: templates/InvenTree/notifications/sidebar.html:5
+#: templates/InvenTree/settings/sidebar.html:17
+#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5
+msgid "Notifications"
+msgstr ""
+
+#: templates/InvenTree/notifications/notifications.html:38
+msgid "No unread notifications found"
+msgstr ""
+
+#: templates/InvenTree/notifications/notifications.html:58
+msgid "No notification history found"
+msgstr ""
+
+#: templates/InvenTree/notifications/notifications.html:65
+msgid "Delete all read notifications"
+msgstr ""
+
+#: templates/InvenTree/notifications/notifications.html:89
+#: templates/js/translated/notification.js:85
+msgid "Delete Notification"
+msgstr ""
+
+#: templates/InvenTree/notifications/sidebar.html:8
+msgid "Inbox"
+msgstr ""
+
+#: templates/InvenTree/notifications/sidebar.html:10
+msgid "History"
+msgstr ""
+
+#: templates/InvenTree/search.html:8
+msgid "Search Results"
+msgstr ""
+
+#: templates/InvenTree/settings/barcode.html:8
+msgid "Barcode Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/build.html:8
+msgid "Build Order Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/category.html:7
+msgid "Category Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/global.html:8
+msgid "Server Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/label.html:8
+#: templates/InvenTree/settings/user_labels.html:9
+msgid "Label Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/login.html:8
+msgid "Login Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/login.html:15
+msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!"
+msgstr ""
+
+#: templates/InvenTree/settings/login.html:27 templates/account/signup.html:5
+#: templates/socialaccount/signup.html:5
+msgid "Signup"
+msgstr ""
+
+#: templates/InvenTree/settings/login.html:36
+msgid "Single Sign On"
+msgstr ""
+
+#: templates/InvenTree/settings/mixins/settings.html:5
+#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147
+msgid "Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/mixins/urls.html:5
+msgid "URLs"
+msgstr ""
+
+#: templates/InvenTree/settings/mixins/urls.html:8
+#, python-format
+msgid "The Base-URL for this plugin is %(base)s ."
+msgstr ""
+
+#: templates/InvenTree/settings/mixins/urls.html:14
+msgid "URL"
+msgstr ""
+
+#: templates/InvenTree/settings/mixins/urls.html:23
+msgid "Open in new tab"
+msgstr ""
+
+#: templates/InvenTree/settings/notifications.html:9
+#: templates/InvenTree/settings/user_notifications.html:9
+msgid "Notification Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/notifications.html:18
+msgid "Slug"
+msgstr ""
+
+#: templates/InvenTree/settings/part.html:7
+msgid "Part Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/part.html:44
+msgid "Part Import"
+msgstr ""
+
+#: templates/InvenTree/settings/part.html:48
+msgid "Import Part"
+msgstr ""
+
+#: templates/InvenTree/settings/part_parameters.html:20
+msgid "Part Parameter Templates"
+msgstr ""
+
+#: templates/InvenTree/settings/part_stocktake.html:7
+msgid "Stocktake Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/part_stocktake.html:25
+msgid "Stocktake Reports"
+msgstr ""
+
+#: templates/InvenTree/settings/physical_units.html:8
+#: templates/InvenTree/settings/sidebar.html:35
+msgid "Physical Units"
+msgstr ""
+
+#: templates/InvenTree/settings/physical_units.html:12
+msgid "Add Unit"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:9
+#: templates/InvenTree/settings/sidebar.html:64
+msgid "Plugin Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:15
+msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage."
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:38
+#: templates/InvenTree/settings/sidebar.html:66
+msgid "Plugins"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:44
+#: templates/InvenTree/settings/plugin.html:45
+#: templates/js/translated/plugin.js:151
+msgid "Install Plugin"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:47
+#: templates/InvenTree/settings/plugin.html:48
+#: templates/js/translated/plugin.js:224
+msgid "Reload Plugins"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:58
+msgid "External plugins are not enabled for this InvenTree installation"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:73
+msgid "Plugin Error Stack"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:82
+msgid "Stage"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin.html:84
+#: templates/js/translated/notification.js:76
+msgid "Message"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:16
+msgid "Plugin information"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:47
+msgid "no version information supplied"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:61
+msgid "License"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:70
+msgid "The code information is pulled from the latest git commit for this plugin. It might not reflect official version numbers or information but the actual code running."
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:76
+msgid "Package information"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:82
+msgid "Installation method"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:85
+msgid "This plugin was installed as a package"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:87
+msgid "This plugin was found in a local server path"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:93
+msgid "Installation path"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:100
+#: templates/js/translated/plugin.js:68
+#: templates/js/translated/table_filters.js:517
+msgid "Builtin"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:101
+msgid "This is a builtin plugin which cannot be disabled"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:107
+#: templates/js/translated/plugin.js:72
+#: templates/js/translated/table_filters.js:521
+msgid "Sample"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:108
+msgid "This is a sample plugin"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:113
+msgid "Commit Author"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:117
+#: templates/about.html:36
+msgid "Commit Date"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:121
+#: templates/about.html:29
+msgid "Commit Hash"
+msgstr ""
+
+#: templates/InvenTree/settings/plugin_settings.html:125
+msgid "Commit Message"
+msgstr ""
+
+#: templates/InvenTree/settings/po.html:7
+msgid "Purchase Order Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/pricing.html:7
+msgid "Pricing Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/pricing.html:35
+msgid "Exchange Rates"
+msgstr ""
+
+#: templates/InvenTree/settings/pricing.html:39
+msgid "Update Now"
+msgstr ""
+
+#: templates/InvenTree/settings/pricing.html:47
+#: templates/InvenTree/settings/pricing.html:51
+msgid "Last Update"
+msgstr ""
+
+#: templates/InvenTree/settings/pricing.html:51
+msgid "Never"
+msgstr ""
+
+#: templates/InvenTree/settings/project_codes.html:8
+msgid "Project Code Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/project_codes.html:21
+#: templates/InvenTree/settings/sidebar.html:33
+msgid "Project Codes"
+msgstr ""
+
+#: templates/InvenTree/settings/project_codes.html:25
+#: templates/InvenTree/settings/settings_staff_js.html:216
+msgid "New Project Code"
+msgstr ""
+
+#: templates/InvenTree/settings/report.html:8
+#: templates/InvenTree/settings/user_reporting.html:9
+msgid "Report Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/returns.html:7
+msgid "Return Order Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/setting.html:31
+msgid "No value set"
+msgstr ""
+
+#: templates/InvenTree/settings/setting.html:46
+msgid "Edit setting"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_js.html:58
+msgid "Edit Plugin Setting"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_js.html:60
+msgid "Edit Notification Setting"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_js.html:63
+msgid "Edit Global Setting"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_js.html:65
+msgid "Edit User Setting"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:49
+msgid "Rate"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:81
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
+#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
+#: templates/js/translated/stock.js:252 users/models.py:408
+msgid "Delete"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:95
+msgid "Edit Custom Unit"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:110
+msgid "Delete Custom Unit"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:124
+msgid "New Custom Unit"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:140
+msgid "No project codes found"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:158
+#: templates/js/translated/build.js:2403
+msgid "group"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:175
+#: templates/InvenTree/settings/settings_staff_js.html:189
+msgid "Edit Project Code"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:176
+#: templates/InvenTree/settings/settings_staff_js.html:203
+msgid "Delete Project Code"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:285
+msgid "No category parameter templates found"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:308
+#: templates/js/translated/part.js:1652
+msgid "Edit Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:309
+#: templates/js/translated/part.js:1653
+msgid "Delete Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:326
+msgid "Edit Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:352
+msgid "Delete Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:387
+msgid "Create Category Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:416
+msgid "Create Part Parameter Template"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:439
+msgid "No stock location types found"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:464
+msgid "Location count"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:469
+#: templates/InvenTree/settings/settings_staff_js.html:483
+msgid "Edit Location Type"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:470
+msgid "Delete Location type"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:493
+msgid "Delete Location Type"
+msgstr ""
+
+#: templates/InvenTree/settings/settings_staff_js.html:503
+#: templates/InvenTree/settings/stock.html:39
+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:2200 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:35
+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: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:958
+msgid "Primary"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:86
+msgid "Make Primary"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:87
+msgid "Re-send Verification"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:96
+msgid "Warning:"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:97
+msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc."
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:105
+msgid "Add Email Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:110
+msgid "Add Email"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:120
+msgid "Multifactor"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:125
+msgid "You have these factors available:"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:135
+msgid "TOTP"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:141
+msgid "Static"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:150
+msgid "Multifactor authentication is not configured for your account"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:157
+msgid "Change factors"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:158
+msgid "Setup multifactor"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:160
+msgid "Remove multifactor"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:171
+msgid "Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:177
+msgid "Log out active sessions (except this one)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:178
+msgid "Log Out Active Sessions"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:187
+msgid "unknown on unknown "
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:188
+msgid "unknown "
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:192
+msgid "IP Address"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:193
+msgid "Device"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:194
+msgid "Last Activity"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:207
+#, python-format
+msgid "%(time)s ago (this session)"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:209
+#, python-format
+msgid "%(time)s ago"
+msgstr ""
+
+#: templates/InvenTree/settings/user.html:223
+msgid "Do you really want to remove the selected email address?"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:9
+msgid "Display Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:29
+msgid "Theme Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:39
+msgid "Select theme"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:50
+msgid "Set Theme"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:58
+msgid "Language Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:67
+msgid "Select language"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:83
+#, python-format
+msgid "%(lang_translated)s%% translated"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:85
+msgid "No translations available"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:92
+msgid "Set Language"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:95
+msgid "Some languages are not complete"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:97
+msgid "Show only sufficient"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:99
+msgid "and hidden."
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:99
+msgid "Show them too"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:106
+msgid "Help the translation efforts!"
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:107
+msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged."
+msgstr ""
+
+#: templates/InvenTree/settings/user_display.html:108
+msgid "InvenTree Translation Project"
+msgstr ""
+
+#: templates/InvenTree/settings/user_homepage.html:9
+msgid "Home Page Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/user_search.html:9
+msgid "Search Settings"
+msgstr ""
+
+#: templates/InvenTree/settings/user_sso.html:9
+msgid "Single Sign On Accounts"
+msgstr ""
+
+#: templates/InvenTree/settings/user_sso.html:16
+msgid "You can sign in to your account using any of the following third party accounts:"
+msgstr ""
+
+#: templates/InvenTree/settings/user_sso.html:52
+msgid "There are no social network accounts connected to this account."
+msgstr ""
+
+#: templates/InvenTree/settings/user_sso.html:58
+msgid "Add SSO Account"
+msgstr ""
+
+#: templates/InvenTree/settings/user_sso.html:67
+msgid "Single Sign On is not enabled for this server"
+msgstr ""
+
+#: templates/about.html:9
+msgid "InvenTree Version"
+msgstr ""
+
+#: templates/about.html:14
+msgid "Development Version"
+msgstr ""
+
+#: templates/about.html:17
+msgid "Up to Date"
+msgstr ""
+
+#: templates/about.html:19
+msgid "Update Available"
+msgstr ""
+
+#: templates/about.html:43
+msgid "Commit Branch"
+msgstr ""
+
+#: templates/about.html:49
+msgid "InvenTree Documentation"
+msgstr ""
+
+#: templates/about.html:54
+msgid "API Version"
+msgstr ""
+
+#: templates/about.html:59
+msgid "Python Version"
+msgstr ""
+
+#: templates/about.html:64
+msgid "Django Version"
+msgstr ""
+
+#: templates/about.html:69
+msgid "View Code on GitHub"
+msgstr ""
+
+#: templates/about.html:74
+msgid "Credits"
+msgstr ""
+
+#: templates/about.html:79
+msgid "Mobile App"
+msgstr ""
+
+#: templates/about.html:84
+msgid "Submit Bug Report"
+msgstr ""
+
+#: templates/about.html:91 templates/clip.html:4
+#: templates/js/translated/helpers.js:598
+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:775
+msgid "Confirm"
+msgstr ""
+
+#: templates/account/email_confirm.html:29
+#, python-format
+msgid "This email confirmation link expired or is invalid. Please issue a new email confirmation request ."
+msgstr ""
+
+#: templates/account/login.html:6 templates/account/login.html:19
+#: templates/account/login.html:40 templates/socialaccount/login.html:5
+msgid "Sign In"
+msgstr ""
+
+#: templates/account/login.html:23
+msgid "Not a member?"
+msgstr ""
+
+#: templates/account/login.html:25 templates/account/signup.html:11
+#: templates/account/signup.html:22 templates/socialaccount/signup.html:8
+#: templates/socialaccount/signup.html:23
+msgid "Sign Up"
+msgstr ""
+
+#: templates/account/login.html:47
+msgid "Forgot Password?"
+msgstr ""
+
+#: templates/account/login.html:55
+msgid "or log in with"
+msgstr ""
+
+#: templates/account/logout.html:5 templates/account/logout.html:8
+#: templates/account/logout.html:20
+msgid "Sign Out"
+msgstr ""
+
+#: templates/account/logout.html:10
+msgid "Are you sure you want to sign out?"
+msgstr ""
+
+#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35
+#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:45
+msgid "Return to Site"
+msgstr ""
+
+#: templates/account/password_reset.html:5
+#: templates/account/password_reset.html:12
+msgid "Password Reset"
+msgstr ""
+
+#: templates/account/password_reset.html:18
+msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it."
+msgstr ""
+
+#: templates/account/password_reset.html:23
+msgid "Reset My Password"
+msgstr ""
+
+#: templates/account/password_reset.html:27 templates/account/signup.html:37
+msgid "This function is currently disabled. Please contact an administrator."
+msgstr ""
+
+#: templates/account/password_reset_from_key.html:7
+msgid "Bad Token"
+msgstr ""
+
+#: templates/account/password_reset_from_key.html:11
+#, python-format
+msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset ."
+msgstr ""
+
+#: templates/account/password_reset_from_key.html:18
+msgid "Change password"
+msgstr ""
+
+#: templates/account/password_reset_from_key.html:22
+msgid "Your password is now changed."
+msgstr ""
+
+#: templates/account/signup.html:13
+#, python-format
+msgid "Already have an account? Then please sign in ."
+msgstr ""
+
+#: templates/account/signup.html:28
+msgid "Use a SSO-provider for signup"
+msgstr ""
+
+#: templates/account/signup_closed.html:5
+#: templates/account/signup_closed.html:8
+msgid "Sign Up Closed"
+msgstr ""
+
+#: templates/account/signup_closed.html:10
+msgid "Sign up is currently closed."
+msgstr ""
+
+#: templates/account/signup_closed.html:15
+#: templates/socialaccount/authentication_error.html:19
+#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html:30
+msgid "Return to login page"
+msgstr ""
+
+#: templates/admin_button.html:8
+msgid "View in administration panel"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:5
+msgid "Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/authenticate.html:13
+msgid "Authenticate"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:6
+msgid "Two-Factor Authentication Backup Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:17
+msgid "Backup tokens have been generated, but are not revealed here for security reasons. Press the button below to generate new ones."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:20
+msgid "No backup tokens are available. Press the button below to generate some."
+msgstr ""
+
+#: templates/allauth_2fa/backup_tokens.html:28
+msgid "Generate Tokens"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:6
+msgid "Disable Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:9
+msgid "Are you sure?"
+msgstr ""
+
+#: templates/allauth_2fa/remove.html:17
+msgid "Disable 2FA"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:6
+msgid "Setup Two-Factor Authentication"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:10
+msgid "Step 1"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:14
+msgid "Scan the QR code below with a token generator of your choice (for instance Google Authenticator)."
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:20
+msgid "Secret: "
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:24
+msgid "Step 2"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:28
+msgid "Input a token generated by the app:"
+msgstr ""
+
+#: templates/allauth_2fa/setup.html:38
+msgid "Verify"
+msgstr ""
+
+#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70
+msgid "Add Link"
+msgstr ""
+
+#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48
+msgid "Add Attachment"
+msgstr ""
+
+#: templates/barcode_data.html:5
+msgid "Barcode Identifier"
+msgstr ""
+
+#: templates/base.html:102
+msgid "Server Restart Required"
+msgstr ""
+
+#: templates/base.html:105
+msgid "A configuration option has been changed which requires a server restart"
+msgstr ""
+
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
+msgid "Contact your system administrator for further information"
+msgstr ""
+
+#: templates/base.html:112
+msgid "Pending Database Migrations"
+msgstr ""
+
+#: templates/base.html:115
+msgid "There are pending database migrations which require attention"
+msgstr ""
+
+#: templates/email/build_order_completed.html:9
+#: templates/email/canceled_order_assigned.html:9
+#: templates/email/new_order_assigned.html:9
+#: templates/email/overdue_build_order.html:9
+#: templates/email/overdue_purchase_order.html:9
+#: templates/email/overdue_sales_order.html:9
+#: templates/email/purchase_order_received.html:9
+#: templates/email/return_order_received.html:9
+msgid "Click on the following link to view this order"
+msgstr ""
+
+#: templates/email/build_order_required_stock.html:7
+msgid "Stock is required for the following build order"
+msgstr ""
+
+#: templates/email/build_order_required_stock.html:8
+#, python-format
+msgid "Build order %(build)s - building %(quantity)s x %(part)s"
+msgstr ""
+
+#: templates/email/build_order_required_stock.html:10
+msgid "Click on the following link to view this build order"
+msgstr ""
+
+#: templates/email/build_order_required_stock.html:14
+msgid "The following parts are low on required stock"
+msgstr ""
+
+#: templates/email/build_order_required_stock.html:18
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
+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:3253
+msgid "Minimum Quantity"
+msgstr ""
+
+#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1135
+msgid "No Response"
+msgstr ""
+
+#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1136
+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:1145
+msgid "Error 401: Not Authenticated"
+msgstr ""
+
+#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1146
+msgid "Authentication credentials not supplied"
+msgstr ""
+
+#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1150
+msgid "Error 403: Permission Denied"
+msgstr ""
+
+#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1151
+msgid "You do not have the required permissions to access this function"
+msgstr ""
+
+#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1155
+msgid "Error 404: Resource Not Found"
+msgstr ""
+
+#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1156
+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:1160
+msgid "Error 408: Timeout"
+msgstr ""
+
+#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1161
+msgid "Connection timeout while requesting data from server"
+msgstr ""
+
+#: templates/js/translated/api.js:261
+msgid "Error 503: Service Unavailable"
+msgstr ""
+
+#: templates/js/translated/api.js:262
+msgid "The server is currently unavailable"
+msgstr ""
+
+#: templates/js/translated/api.js:265
+msgid "Unhandled Error Code"
+msgstr ""
+
+#: templates/js/translated/api.js:266
+msgid "Error code"
+msgstr ""
+
+#: templates/js/translated/attachment.js:114
+msgid "All selected attachments will be deleted"
+msgstr ""
+
+#: templates/js/translated/attachment.js:129
+msgid "Delete Attachments"
+msgstr ""
+
+#: templates/js/translated/attachment.js:205
+msgid "Delete attachments"
+msgstr ""
+
+#: templates/js/translated/attachment.js:260
+msgid "Attachment actions"
+msgstr ""
+
+#: templates/js/translated/attachment.js:294
+msgid "No attachments found"
+msgstr ""
+
+#: templates/js/translated/attachment.js:334
+msgid "Edit Attachment"
+msgstr ""
+
+#: templates/js/translated/attachment.js:365
+msgid "Upload Date"
+msgstr ""
+
+#: templates/js/translated/attachment.js:385
+msgid "Edit attachment"
+msgstr ""
+
+#: templates/js/translated/attachment.js:393
+msgid "Delete attachment"
+msgstr ""
+
+#: templates/js/translated/barcode.js:43
+msgid "Scan barcode data here using barcode scanner"
+msgstr ""
+
+#: templates/js/translated/barcode.js:45
+msgid "Enter barcode data"
+msgstr ""
+
+#: templates/js/translated/barcode.js:59
+msgid "Scan barcode using connected webcam"
+msgstr ""
+
+#: templates/js/translated/barcode.js:138
+msgid "Enter optional notes for stock transfer"
+msgstr ""
+
+#: templates/js/translated/barcode.js:139
+msgid "Enter notes"
+msgstr ""
+
+#: templates/js/translated/barcode.js:188
+msgid "Server error"
+msgstr ""
+
+#: templates/js/translated/barcode.js:217
+msgid "Unknown response from server"
+msgstr ""
+
+#: templates/js/translated/barcode.js:252
+#: templates/js/translated/modals.js:1125
+msgid "Invalid server response"
+msgstr ""
+
+#: templates/js/translated/barcode.js:403
+msgid "Scan barcode data"
+msgstr ""
+
+#: templates/js/translated/barcode.js:451 templates/navbar.html:114
+msgid "Scan Barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:489
+msgid "No URL in response"
+msgstr ""
+
+#: templates/js/translated/barcode.js:529
+msgid "This will remove the link to the associated barcode"
+msgstr ""
+
+#: templates/js/translated/barcode.js:535
+msgid "Unlink"
+msgstr ""
+
+#: templates/js/translated/barcode.js:598 templates/js/translated/stock.js:1188
+msgid "Remove stock item"
+msgstr ""
+
+#: templates/js/translated/barcode.js:641
+msgid "Scan Stock Items Into Location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:643
+msgid "Scan stock item barcode to check in to this location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:646
+#: templates/js/translated/barcode.js:843
+msgid "Check In"
+msgstr ""
+
+#: templates/js/translated/barcode.js:678
+msgid "No barcode provided"
+msgstr ""
+
+#: templates/js/translated/barcode.js:718
+msgid "Stock Item already scanned"
+msgstr ""
+
+#: templates/js/translated/barcode.js:722
+msgid "Stock Item already in this location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:729
+msgid "Added stock item"
+msgstr ""
+
+#: templates/js/translated/barcode.js:738
+msgid "Barcode does not match valid stock item"
+msgstr ""
+
+#: templates/js/translated/barcode.js:757
+msgid "Scan Stock Container Into Location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:759
+msgid "Scan stock container barcode to check in to this location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:793
+msgid "Barcode does not match valid stock location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:837
+msgid "Check Into Location"
+msgstr ""
+
+#: templates/js/translated/barcode.js:906
+#: templates/js/translated/barcode.js:915
+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:75 templates/js/translated/modals.js:629
+#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
+#: templates/js/translated/purchase_order.js:780 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:2682
+msgid "Variant stock allowed"
+msgstr ""
+
+#: templates/js/translated/bom.js:1014
+msgid "Substitutes"
+msgstr ""
+
+#: templates/js/translated/bom.js:1139
+msgid "BOM pricing is complete"
+msgstr ""
+
+#: templates/js/translated/bom.js:1144
+msgid "BOM pricing is incomplete"
+msgstr ""
+
+#: templates/js/translated/bom.js:1151
+msgid "No pricing available"
+msgstr ""
+
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
+msgid "External stock"
+msgstr ""
+
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
+msgid "No Stock Available"
+msgstr ""
+
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
+msgid "Includes variant and substitute stock"
+msgstr ""
+
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
+#: templates/js/translated/part.js:1263
+#: templates/js/translated/sales_order.js:1924
+msgid "Includes variant stock"
+msgstr ""
+
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
+msgid "Includes substitute stock"
+msgstr ""
+
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
+msgid "Consumable item"
+msgstr ""
+
+#: templates/js/translated/bom.js:1285
+msgid "Validate BOM Item"
+msgstr ""
+
+#: templates/js/translated/bom.js:1287
+msgid "This line has been validated"
+msgstr ""
+
+#: templates/js/translated/bom.js:1289
+msgid "Edit substitute parts"
+msgstr ""
+
+#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486
+msgid "Edit BOM Item"
+msgstr ""
+
+#: templates/js/translated/bom.js:1293
+msgid "Delete BOM Item"
+msgstr ""
+
+#: templates/js/translated/bom.js:1313
+msgid "View BOM"
+msgstr ""
+
+#: templates/js/translated/bom.js:1397
+msgid "No BOM items found"
+msgstr ""
+
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
+msgid "Required Part"
+msgstr ""
+
+#: templates/js/translated/bom.js:1683
+msgid "Inherited from parent BOM"
+msgstr ""
+
+#: templates/js/translated/build.js:143
+msgid "Edit Build Order"
+msgstr ""
+
+#: templates/js/translated/build.js:194
+msgid "Create Build Order"
+msgstr ""
+
+#: templates/js/translated/build.js:226
+msgid "Cancel Build Order"
+msgstr ""
+
+#: templates/js/translated/build.js:235
+msgid "Are you sure you wish to cancel this build?"
+msgstr ""
+
+#: templates/js/translated/build.js:241
+msgid "Stock items have been allocated to this build order"
+msgstr ""
+
+#: templates/js/translated/build.js:248
+msgid "There are incomplete outputs remaining for this build order"
+msgstr ""
+
+#: templates/js/translated/build.js:300
+msgid "Build order is ready to be completed"
+msgstr ""
+
+#: templates/js/translated/build.js:308
+msgid "This build order cannot be completed as there are incomplete outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:313
+msgid "Build Order is incomplete"
+msgstr ""
+
+#: templates/js/translated/build.js:331
+msgid "Complete Build Order"
+msgstr ""
+
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
+#: templates/js/translated/stock.js:301
+msgid "Next available serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
+#: templates/js/translated/stock.js:303
+msgid "Latest serial number"
+msgstr ""
+
+#: templates/js/translated/build.js:383
+msgid "The Bill of Materials contains trackable parts"
+msgstr ""
+
+#: templates/js/translated/build.js:384
+msgid "Build outputs must be generated individually"
+msgstr ""
+
+#: templates/js/translated/build.js:392
+msgid "Trackable parts can have serial numbers specified"
+msgstr ""
+
+#: templates/js/translated/build.js:393
+msgid "Enter serial numbers to generate multiple single build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:400
+msgid "Create Build Output"
+msgstr ""
+
+#: templates/js/translated/build.js:431
+msgid "Allocate stock items to this build output"
+msgstr ""
+
+#: templates/js/translated/build.js:439
+msgid "Deallocate stock from build output"
+msgstr ""
+
+#: templates/js/translated/build.js:448
+msgid "Complete build output"
+msgstr ""
+
+#: templates/js/translated/build.js:456
+msgid "Scrap build output"
+msgstr ""
+
+#: templates/js/translated/build.js:463
+msgid "Delete build output"
+msgstr ""
+
+#: templates/js/translated/build.js:483
+msgid "Are you sure you wish to deallocate the selected stock items from this build?"
+msgstr ""
+
+#: templates/js/translated/build.js:501
+msgid "Deallocate Stock Items"
+msgstr ""
+
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
+msgid "Select Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
+msgid "At least one build output must be selected"
+msgstr ""
+
+#: templates/js/translated/build.js:602
+msgid "Selected build outputs will be marked as complete"
+msgstr ""
+
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
+msgid "Output"
+msgstr ""
+
+#: templates/js/translated/build.js:633
+msgid "Complete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:730
+msgid "Selected build outputs will be marked as scrapped"
+msgstr ""
+
+#: templates/js/translated/build.js:732
+msgid "Scrapped output are marked as rejected"
+msgstr ""
+
+#: templates/js/translated/build.js:733
+msgid "Allocated stock items will no longer be available"
+msgstr ""
+
+#: templates/js/translated/build.js:734
+msgid "The completion status of the build order will not be adjusted"
+msgstr ""
+
+#: templates/js/translated/build.js:764
+msgid "Scrap Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:854
+msgid "Selected build outputs will be deleted"
+msgstr ""
+
+#: templates/js/translated/build.js:856
+msgid "Build output data will be permanently deleted"
+msgstr ""
+
+#: templates/js/translated/build.js:857
+msgid "Allocated stock items will be returned to stock"
+msgstr ""
+
+#: templates/js/translated/build.js:875
+msgid "Delete Build Outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:962
+msgid "Delete allocations"
+msgstr ""
+
+#: templates/js/translated/build.js:969
+msgid "Delete Stock Allocations"
+msgstr ""
+
+#: templates/js/translated/build.js:992
+msgid "No allocated stock"
+msgstr ""
+
+#: templates/js/translated/build.js:1048
+msgid "Stock item"
+msgstr ""
+
+#: templates/js/translated/build.js:1073
+msgid "Edit build allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:1074
+msgid "Delete build allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:1092
+msgid "Edit Build Allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:1105
+msgid "Delete Build Allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:1136
+msgid "No build order allocations found"
+msgstr ""
+
+#: templates/js/translated/build.js:1181
+msgid "Location not specified"
+msgstr ""
+
+#: templates/js/translated/build.js:1203
+msgid "Complete outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:1221
+msgid "Scrap outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:1239
+msgid "Delete outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:1292
+msgid "build output"
+msgstr ""
+
+#: templates/js/translated/build.js:1293
+msgid "build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:1297
+msgid "Build output actions"
+msgstr ""
+
+#: templates/js/translated/build.js:1473
+msgid "No active build outputs found"
+msgstr ""
+
+#: templates/js/translated/build.js:1566
+msgid "Allocated Lines"
+msgstr ""
+
+#: templates/js/translated/build.js:1580
+msgid "Required Tests"
+msgstr ""
+
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
+msgid "Select Parts"
+msgstr ""
+
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
+msgid "You must select at least one part to allocate"
+msgstr ""
+
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
+msgid "Specify stock allocation quantity"
+msgstr ""
+
+#: templates/js/translated/build.js:1893
+msgid "All Parts Allocated"
+msgstr ""
+
+#: templates/js/translated/build.js:1894
+msgid "All selected parts have been fully allocated"
+msgstr ""
+
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
+msgid "Select source location (leave blank to take from all locations)"
+msgstr ""
+
+#: templates/js/translated/build.js:1936
+msgid "Allocate Stock Items to Build Order"
+msgstr ""
+
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
+msgid "No matching stock locations"
+msgstr ""
+
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
+msgid "No matching stock items"
+msgstr ""
+
+#: templates/js/translated/build.js:2117
+msgid "Automatic Stock Allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:2118
+msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
+msgstr ""
+
+#: templates/js/translated/build.js:2120
+msgid "If a location is specified, stock will only be allocated from that location"
+msgstr ""
+
+#: templates/js/translated/build.js:2121
+msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
+msgstr ""
+
+#: templates/js/translated/build.js:2122
+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:2152
+msgid "Allocate Stock Items"
+msgstr ""
+
+#: templates/js/translated/build.js:2257
+msgid "No builds matching query"
+msgstr ""
+
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
+#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
+#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
+msgid "Select"
+msgstr ""
+
+#: templates/js/translated/build.js:2306
+msgid "Build order is overdue"
+msgstr ""
+
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
+msgid "No user information"
+msgstr ""
+
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
+msgid "Edit stock allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
+msgid "Delete stock allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:2584
+msgid "Edit Allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:2596
+msgid "Remove Allocation"
+msgstr ""
+
+#: templates/js/translated/build.js:2636
+msgid "build line"
+msgstr ""
+
+#: templates/js/translated/build.js:2637
+msgid "build lines"
+msgstr ""
+
+#: templates/js/translated/build.js:2656
+msgid "No build lines found"
+msgstr ""
+
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
+#: templates/js/translated/part.js:1209
+msgid "Trackable part"
+msgstr ""
+
+#: templates/js/translated/build.js:2729
+msgid "Gets Inherited"
+msgstr ""
+
+#: templates/js/translated/build.js:2748
+msgid "Unit Quantity"
+msgstr ""
+
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
+msgid "Sufficient stock available"
+msgstr ""
+
+#: templates/js/translated/build.js:2855
+msgid "Consumable Item"
+msgstr ""
+
+#: templates/js/translated/build.js:2862
+msgid "Tracked item"
+msgstr ""
+
+#: templates/js/translated/build.js:2863
+msgid "Allocate tracked items against individual build outputs"
+msgstr ""
+
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
+msgid "Build stock"
+msgstr ""
+
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
+msgid "Order stock"
+msgstr ""
+
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
+msgid "Allocate stock"
+msgstr ""
+
+#: templates/js/translated/build.js:2884
+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:214
+msgid "Add Manufacturer Part"
+msgstr ""
+
+#: templates/js/translated/company.js:132
+msgid "Edit Manufacturer Part"
+msgstr ""
+
+#: templates/js/translated/company.js:202
+#: templates/js/translated/purchase_order.js:93
+msgid "Add Supplier"
+msgstr ""
+
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
+msgid "Add Supplier Part"
+msgstr ""
+
+#: templates/js/translated/company.js:345
+msgid "All selected supplier parts will be deleted"
+msgstr ""
+
+#: templates/js/translated/company.js:361
+msgid "Delete Supplier Parts"
+msgstr ""
+
+#: templates/js/translated/company.js:467
+msgid "Add new Company"
+msgstr ""
+
+#: templates/js/translated/company.js:547
+msgid "Parts Supplied"
+msgstr ""
+
+#: templates/js/translated/company.js:556
+msgid "Parts Manufactured"
+msgstr ""
+
+#: templates/js/translated/company.js:571
+msgid "No company information found"
+msgstr ""
+
+#: templates/js/translated/company.js:620
+msgid "Create New Contact"
+msgstr ""
+
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
+msgid "Edit Contact"
+msgstr ""
+
+#: templates/js/translated/company.js:673
+msgid "All selected contacts will be deleted"
+msgstr ""
+
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
+msgid "Role"
+msgstr ""
+
+#: templates/js/translated/company.js:687
+msgid "Delete Contacts"
+msgstr ""
+
+#: templates/js/translated/company.js:718
+msgid "No contacts found"
+msgstr ""
+
+#: templates/js/translated/company.js:731
+msgid "Phone Number"
+msgstr ""
+
+#: templates/js/translated/company.js:737
+msgid "Email Address"
+msgstr ""
+
+#: templates/js/translated/company.js:763
+msgid "Delete Contact"
+msgstr ""
+
+#: templates/js/translated/company.js:860
+msgid "Create New Address"
+msgstr ""
+
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
+msgid "Edit Address"
+msgstr ""
+
+#: templates/js/translated/company.js:910
+msgid "All selected addresses will be deleted"
+msgstr ""
+
+#: templates/js/translated/company.js:924
+msgid "Delete Addresses"
+msgstr ""
+
+#: templates/js/translated/company.js:951
+msgid "No addresses found"
+msgstr ""
+
+#: templates/js/translated/company.js:990
+msgid "Postal city"
+msgstr ""
+
+#: templates/js/translated/company.js:996
+msgid "State/province"
+msgstr ""
+
+#: templates/js/translated/company.js:1008
+msgid "Courier notes"
+msgstr ""
+
+#: templates/js/translated/company.js:1014
+msgid "Internal notes"
+msgstr ""
+
+#: templates/js/translated/company.js:1040
+msgid "Delete Address"
+msgstr ""
+
+#: templates/js/translated/company.js:1113
+msgid "All selected manufacturer parts will be deleted"
+msgstr ""
+
+#: templates/js/translated/company.js:1128
+msgid "Delete Manufacturer Parts"
+msgstr ""
+
+#: templates/js/translated/company.js:1162
+msgid "All selected parameters will be deleted"
+msgstr ""
+
+#: templates/js/translated/company.js:1176
+msgid "Delete Parameters"
+msgstr ""
+
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
+msgid "Order parts"
+msgstr ""
+
+#: templates/js/translated/company.js:1209
+msgid "Delete manufacturer parts"
+msgstr ""
+
+#: templates/js/translated/company.js:1241
+msgid "Manufacturer part actions"
+msgstr ""
+
+#: templates/js/translated/company.js:1260
+msgid "No manufacturer parts found"
+msgstr ""
+
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
+#: templates/js/translated/part.js:1217
+msgid "Template part"
+msgstr ""
+
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
+#: templates/js/translated/part.js:1221
+msgid "Assembled part"
+msgstr ""
+
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
+msgid "No parameters found"
+msgstr ""
+
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
+msgid "Edit parameter"
+msgstr ""
+
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
+msgid "Delete parameter"
+msgstr ""
+
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
+msgid "Edit Parameter"
+msgstr ""
+
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
+msgid "Delete Parameter"
+msgstr ""
+
+#: templates/js/translated/company.js:1497
+msgid "Delete supplier parts"
+msgstr ""
+
+#: templates/js/translated/company.js:1547
+msgid "No supplier parts found"
+msgstr ""
+
+#: templates/js/translated/company.js:1665
+msgid "Base Units"
+msgstr ""
+
+#: templates/js/translated/company.js:1695
+msgid "Availability"
+msgstr ""
+
+#: templates/js/translated/company.js:1726
+msgid "Edit supplier part"
+msgstr ""
+
+#: templates/js/translated/company.js:1727
+msgid "Delete supplier part"
+msgstr ""
+
+#: templates/js/translated/company.js:1780
+#: templates/js/translated/pricing.js:694
+msgid "Delete Price Break"
+msgstr ""
+
+#: templates/js/translated/company.js:1790
+#: templates/js/translated/pricing.js:712
+msgid "Edit Price Break"
+msgstr ""
+
+#: templates/js/translated/company.js:1805
+msgid "No price break information found"
+msgstr ""
+
+#: templates/js/translated/company.js:1834
+msgid "Last updated"
+msgstr ""
+
+#: templates/js/translated/company.js:1841
+msgid "Edit price break"
+msgstr ""
+
+#: templates/js/translated/company.js:1842
+msgid "Delete price break"
+msgstr ""
+
+#: templates/js/translated/filters.js:189
+#: templates/js/translated/filters.js:670
+msgid "true"
+msgstr ""
+
+#: templates/js/translated/filters.js:193
+#: templates/js/translated/filters.js:671
+msgid "false"
+msgstr ""
+
+#: templates/js/translated/filters.js:217
+msgid "Select filter"
+msgstr ""
+
+#: templates/js/translated/filters.js:440
+msgid "Print Labels"
+msgstr ""
+
+#: templates/js/translated/filters.js:444
+msgid "Print Reports"
+msgstr ""
+
+#: templates/js/translated/filters.js:456
+msgid "Download table data"
+msgstr ""
+
+#: templates/js/translated/filters.js:463
+msgid "Reload table data"
+msgstr ""
+
+#: templates/js/translated/filters.js:472
+msgid "Add new filter"
+msgstr ""
+
+#: templates/js/translated/filters.js:480
+msgid "Clear all filters"
+msgstr ""
+
+#: templates/js/translated/filters.js:580
+msgid "Create filter"
+msgstr ""
+
+#: templates/js/translated/forms.js:379 templates/js/translated/forms.js:394
+#: templates/js/translated/forms.js:408 templates/js/translated/forms.js:422
+msgid "Action Prohibited"
+msgstr ""
+
+#: templates/js/translated/forms.js:381
+msgid "Create operation not allowed"
+msgstr ""
+
+#: templates/js/translated/forms.js:396
+msgid "Update operation not allowed"
+msgstr ""
+
+#: templates/js/translated/forms.js:410
+msgid "Delete operation not allowed"
+msgstr ""
+
+#: templates/js/translated/forms.js:424
+msgid "View operation not allowed"
+msgstr ""
+
+#: templates/js/translated/forms.js:801
+msgid "Keep this form open"
+msgstr ""
+
+#: templates/js/translated/forms.js:904
+msgid "Enter a valid number"
+msgstr ""
+
+#: templates/js/translated/forms.js:1478 templates/modals.html:19
+#: templates/modals.html:43
+msgid "Form errors exist"
+msgstr ""
+
+#: templates/js/translated/forms.js:2008
+msgid "No results found"
+msgstr ""
+
+#: templates/js/translated/forms.js:2318 templates/js/translated/search.js:239
+msgid "Searching"
+msgstr ""
+
+#: templates/js/translated/forms.js:2532
+msgid "Clear input"
+msgstr ""
+
+#: templates/js/translated/forms.js:3134
+msgid "File Column"
+msgstr ""
+
+#: templates/js/translated/forms.js:3134
+msgid "Field Name"
+msgstr ""
+
+#: templates/js/translated/forms.js:3146
+msgid "Select Columns"
+msgstr ""
+
+#: templates/js/translated/helpers.js:81
+msgid "YES"
+msgstr ""
+
+#: templates/js/translated/helpers.js:84
+msgid "NO"
+msgstr ""
+
+#: templates/js/translated/helpers.js:97
+msgid "True"
+msgstr ""
+
+#: templates/js/translated/helpers.js:98
+msgid "False"
+msgstr ""
+
+#: templates/js/translated/index.js:104
+msgid "No parts required for builds"
+msgstr ""
+
+#: templates/js/translated/label.js:48 templates/js/translated/report.js:38
+msgid "Select Items"
+msgstr ""
+
+#: templates/js/translated/label.js:49 templates/js/translated/report.js:39
+msgid "No items selected for printing"
+msgstr ""
+
+#: templates/js/translated/label.js:143
+msgid "Labels sent to printer"
+msgstr ""
+
+#: templates/js/translated/modals.js:59 templates/js/translated/modals.js:159
+#: templates/js/translated/modals.js:688
+msgid "Cancel"
+msgstr ""
+
+#: templates/js/translated/modals.js:64 templates/js/translated/modals.js:158
+#: templates/js/translated/modals.js:756 templates/js/translated/modals.js:1064
+#: templates/modals.html:28 templates/modals.html:51
+msgid "Submit"
+msgstr ""
+
+#: templates/js/translated/modals.js:157
+msgid "Form Title"
+msgstr ""
+
+#: templates/js/translated/modals.js:446
+msgid "Waiting for server..."
+msgstr ""
+
+#: templates/js/translated/modals.js:597
+msgid "Show Error Information"
+msgstr ""
+
+#: templates/js/translated/modals.js:687
+msgid "Accept"
+msgstr ""
+
+#: templates/js/translated/modals.js:745
+msgid "Loading Data"
+msgstr ""
+
+#: templates/js/translated/modals.js:1016
+msgid "Invalid response from server"
+msgstr ""
+
+#: templates/js/translated/modals.js:1016
+msgid "Form data missing from server response"
+msgstr ""
+
+#: templates/js/translated/modals.js:1028
+msgid "Error posting form data"
+msgstr ""
+
+#: templates/js/translated/modals.js:1125
+msgid "JSON response missing form data"
+msgstr ""
+
+#: templates/js/translated/modals.js:1140
+msgid "Error 400: Bad Request"
+msgstr ""
+
+#: templates/js/translated/modals.js:1141
+msgid "Server returned error code 400"
+msgstr ""
+
+#: templates/js/translated/modals.js:1164
+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:1611
+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:48
+msgid "Hold Order"
+msgstr ""
+
+#: templates/js/translated/order.js:53
+msgid "Are you sure you wish to place this order on hold?"
+msgstr ""
+
+#: templates/js/translated/order.js:114
+msgid "Add Extra Line Item"
+msgstr ""
+
+#: templates/js/translated/order.js:151
+msgid "Export Order"
+msgstr ""
+
+#: templates/js/translated/order.js:266
+msgid "Duplicate Line"
+msgstr ""
+
+#: templates/js/translated/order.js:280
+msgid "Edit Line"
+msgstr ""
+
+#: templates/js/translated/order.js:293
+msgid "Delete Line"
+msgstr ""
+
+#: templates/js/translated/order.js:306
+#: templates/js/translated/purchase_order.js:2044
+msgid "No line items found"
+msgstr ""
+
+#: templates/js/translated/order.js:394
+msgid "Duplicate line"
+msgstr ""
+
+#: templates/js/translated/order.js:395
+msgid "Edit line"
+msgstr ""
+
+#: templates/js/translated/order.js:399
+msgid "Delete line"
+msgstr ""
+
+#: templates/js/translated/part.js:91
+msgid "Part Attributes"
+msgstr ""
+
+#: templates/js/translated/part.js:95
+msgid "Part Creation Options"
+msgstr ""
+
+#: templates/js/translated/part.js:99
+msgid "Part Duplication Options"
+msgstr ""
+
+#: templates/js/translated/part.js:122
+msgid "Add Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:334 templates/js/translated/stock.js:147
+#: templates/js/translated/stock.js:182
+msgid "Icon (optional) - Explore all available icons on"
+msgstr ""
+
+#: templates/js/translated/part.js:355
+msgid "Create Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:358
+msgid "Create new category after this one"
+msgstr ""
+
+#: templates/js/translated/part.js:359
+msgid "Part category created"
+msgstr ""
+
+#: templates/js/translated/part.js:373
+msgid "Edit Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:386
+msgid "Are you sure you want to delete this part category?"
+msgstr ""
+
+#: templates/js/translated/part.js:391
+msgid "Move to parent category"
+msgstr ""
+
+#: templates/js/translated/part.js:400
+msgid "Delete Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:404
+msgid "Action for parts in this category"
+msgstr ""
+
+#: templates/js/translated/part.js:409
+msgid "Action for child categories"
+msgstr ""
+
+#: templates/js/translated/part.js:433
+msgid "Create Part"
+msgstr ""
+
+#: templates/js/translated/part.js:435
+msgid "Create another part after this one"
+msgstr ""
+
+#: templates/js/translated/part.js:436
+msgid "Part created successfully"
+msgstr ""
+
+#: templates/js/translated/part.js:464
+msgid "Edit Part"
+msgstr ""
+
+#: templates/js/translated/part.js:466
+msgid "Part edited"
+msgstr ""
+
+#: templates/js/translated/part.js:477
+msgid "Create Part Variant"
+msgstr ""
+
+#: templates/js/translated/part.js:534
+msgid "Active Part"
+msgstr ""
+
+#: templates/js/translated/part.js:535
+msgid "Part cannot be deleted as it is currently active"
+msgstr ""
+
+#: templates/js/translated/part.js:549
+msgid "Deleting this part cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/part.js:551
+msgid "Any stock items for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:552
+msgid "This part will be removed from any Bills of Material"
+msgstr ""
+
+#: templates/js/translated/part.js:553
+msgid "All manufacturer and supplier information for this part will be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:560
+msgid "Delete Part"
+msgstr ""
+
+#: templates/js/translated/part.js:596
+msgid "You are subscribed to notifications for this item"
+msgstr ""
+
+#: templates/js/translated/part.js:598
+msgid "You have subscribed to notifications for this item"
+msgstr ""
+
+#: templates/js/translated/part.js:603
+msgid "Subscribe to notifications for this item"
+msgstr ""
+
+#: templates/js/translated/part.js:605
+msgid "You have unsubscribed to notifications for this item"
+msgstr ""
+
+#: templates/js/translated/part.js:622
+msgid "Validating the BOM will mark each line item as valid"
+msgstr ""
+
+#: templates/js/translated/part.js:632
+msgid "Validate Bill of Materials"
+msgstr ""
+
+#: templates/js/translated/part.js:635
+msgid "Validated Bill of Materials"
+msgstr ""
+
+#: templates/js/translated/part.js:660
+msgid "Copy Bill of Materials"
+msgstr ""
+
+#: templates/js/translated/part.js:688
+#: templates/js/translated/table_filters.js:755
+msgid "Low stock"
+msgstr ""
+
+#: templates/js/translated/part.js:691
+msgid "No stock available"
+msgstr ""
+
+#: templates/js/translated/part.js:751
+msgid "Demand"
+msgstr ""
+
+#: templates/js/translated/part.js:774
+msgid "Unit"
+msgstr ""
+
+#: templates/js/translated/part.js:797 templates/js/translated/part.js:1213
+msgid "Virtual part"
+msgstr ""
+
+#: templates/js/translated/part.js:809
+msgid "Subscribed part"
+msgstr ""
+
+#: templates/js/translated/part.js:813
+msgid "Salable part"
+msgstr ""
+
+#: templates/js/translated/part.js:896
+msgid "Schedule generation of a new stocktake report."
+msgstr ""
+
+#: templates/js/translated/part.js:896
+msgid "Once complete, the stocktake report will be available for download."
+msgstr ""
+
+#: templates/js/translated/part.js:904
+msgid "Generate Stocktake Report"
+msgstr ""
+
+#: templates/js/translated/part.js:908
+msgid "Stocktake report scheduled"
+msgstr ""
+
+#: templates/js/translated/part.js:1057
+msgid "No stocktake information available"
+msgstr ""
+
+#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1151
+msgid "Edit Stocktake Entry"
+msgstr ""
+
+#: templates/js/translated/part.js:1119 templates/js/translated/part.js:1161
+msgid "Delete Stocktake Entry"
+msgstr ""
+
+#: templates/js/translated/part.js:1288
+msgid "No variants found"
+msgstr ""
+
+#: templates/js/translated/part.js:1606
+msgid "No part parameter templates found"
+msgstr ""
+
+#: templates/js/translated/part.js:1669
+msgid "Edit Part Parameter Template"
+msgstr ""
+
+#: templates/js/translated/part.js:1681
+msgid "Any parameters which reference this template will also be deleted"
+msgstr ""
+
+#: templates/js/translated/part.js:1689
+msgid "Delete Part Parameter Template"
+msgstr ""
+
+#: templates/js/translated/part.js:1723
+#: templates/js/translated/purchase_order.js:1708
+msgid "No purchase orders found"
+msgstr ""
+
+#: templates/js/translated/part.js:1867
+#: templates/js/translated/purchase_order.js:2207
+#: templates/js/translated/return_order.js:754
+#: templates/js/translated/sales_order.js:1892
+msgid "This line item is overdue"
+msgstr ""
+
+#: templates/js/translated/part.js:1913
+#: templates/js/translated/purchase_order.js:2274
+msgid "Receive line item"
+msgstr ""
+
+#: templates/js/translated/part.js:1976
+msgid "Delete part relationship"
+msgstr ""
+
+#: templates/js/translated/part.js:1998
+msgid "Delete Part Relationship"
+msgstr ""
+
+#: templates/js/translated/part.js:2086 templates/js/translated/part.js:2525
+msgid "No parts found"
+msgstr ""
+
+#: templates/js/translated/part.js:2207
+msgid "Set the part category for the selected parts"
+msgstr ""
+
+#: templates/js/translated/part.js:2212
+msgid "Set Part Category"
+msgstr ""
+
+#: templates/js/translated/part.js:2241
+msgid "Set category"
+msgstr ""
+
+#: templates/js/translated/part.js:2293
+msgid "part"
+msgstr ""
+
+#: templates/js/translated/part.js:2294
+msgid "parts"
+msgstr ""
+
+#: templates/js/translated/part.js:2390
+msgid "No category"
+msgstr ""
+
+#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
+#: templates/js/translated/stock.js:2755
+msgid "Display as list"
+msgstr ""
+
+#: templates/js/translated/part.js:2566
+msgid "Display as grid"
+msgstr ""
+
+#: templates/js/translated/part.js:2664
+msgid "No subcategories found"
+msgstr ""
+
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
+msgid "Display as tree"
+msgstr ""
+
+#: templates/js/translated/part.js:2780
+msgid "Load Subcategories"
+msgstr ""
+
+#: templates/js/translated/part.js:2795
+msgid "Subscribed category"
+msgstr ""
+
+#: templates/js/translated/part.js:2883
+msgid "No test templates matching query"
+msgstr ""
+
+#: templates/js/translated/part.js:2905 templates/js/translated/search.js:342
+msgid "results"
+msgstr ""
+
+#: templates/js/translated/part.js:2955
+msgid "Edit test template"
+msgstr ""
+
+#: templates/js/translated/part.js:2956
+msgid "Delete test template"
+msgstr ""
+
+#: templates/js/translated/part.js:2960
+msgid "This test is defined for a parent part"
+msgstr ""
+
+#: templates/js/translated/part.js:2976
+msgid "Edit Test Result Template"
+msgstr ""
+
+#: templates/js/translated/part.js:2990
+msgid "Delete Test Result Template"
+msgstr ""
+
+#: templates/js/translated/part.js:3069 templates/js/translated/part.js:3070
+msgid "No date specified"
+msgstr ""
+
+#: templates/js/translated/part.js:3072
+msgid "Specified date is in the past"
+msgstr ""
+
+#: templates/js/translated/part.js:3078
+msgid "Speculative"
+msgstr ""
+
+#: templates/js/translated/part.js:3144
+msgid "No scheduling information available for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:3150
+msgid "Error fetching scheduling information for this part"
+msgstr ""
+
+#: templates/js/translated/part.js:3246
+msgid "Scheduled Stock Quantities"
+msgstr ""
+
+#: templates/js/translated/part.js:3262
+msgid "Maximum Quantity"
+msgstr ""
+
+#: templates/js/translated/part.js:3307
+msgid "Minimum Stock Level"
+msgstr ""
+
+#: templates/js/translated/plugin.js:46
+msgid "No plugins found"
+msgstr ""
+
+#: templates/js/translated/plugin.js:58
+msgid "This plugin is no longer installed"
+msgstr ""
+
+#: templates/js/translated/plugin.js:60
+msgid "This plugin is active"
+msgstr ""
+
+#: templates/js/translated/plugin.js:62
+msgid "This plugin is installed but not active"
+msgstr ""
+
+#: templates/js/translated/plugin.js:117 templates/js/translated/plugin.js:186
+msgid "Disable Plugin"
+msgstr ""
+
+#: templates/js/translated/plugin.js:119 templates/js/translated/plugin.js:186
+msgid "Enable Plugin"
+msgstr ""
+
+#: templates/js/translated/plugin.js:158
+msgid "The Plugin was installed"
+msgstr ""
+
+#: templates/js/translated/plugin.js:177
+msgid "Are you sure you want to enable this plugin?"
+msgstr ""
+
+#: templates/js/translated/plugin.js:181
+msgid "Are you sure you want to disable this plugin?"
+msgstr ""
+
+#: templates/js/translated/plugin.js:189
+msgid "Enable"
+msgstr ""
+
+#: templates/js/translated/plugin.js:189
+msgid "Disable"
+msgstr ""
+
+#: templates/js/translated/plugin.js:203
+msgid "Plugin updated"
+msgstr ""
+
+#: templates/js/translated/pricing.js:159
+msgid "Error fetching currency data"
+msgstr ""
+
+#: templates/js/translated/pricing.js:321
+msgid "No BOM data available"
+msgstr ""
+
+#: templates/js/translated/pricing.js:463
+msgid "No supplier pricing data available"
+msgstr ""
+
+#: templates/js/translated/pricing.js:572
+msgid "No price break data available"
+msgstr ""
+
+#: templates/js/translated/pricing.js:755
+msgid "No purchase history data available"
+msgstr ""
+
+#: templates/js/translated/pricing.js:791
+msgid "Purchase Price History"
+msgstr ""
+
+#: templates/js/translated/pricing.js:892
+msgid "No sales history data available"
+msgstr ""
+
+#: templates/js/translated/pricing.js:914
+msgid "Sale Price History"
+msgstr ""
+
+#: templates/js/translated/pricing.js:1003
+msgid "No variant data available"
+msgstr ""
+
+#: templates/js/translated/pricing.js:1043
+msgid "Variant Part"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:188
+msgid "Edit Purchase Order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:205
+msgid "Duplication Options"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:414
+msgid "Complete Purchase Order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/return_order.js:210
+#: templates/js/translated/sales_order.js:511
+msgid "Mark this order as complete?"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:437
+msgid "All line items have been received"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:442
+msgid "This order has line items which have not been marked as received."
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:443
+msgid "Completing this order means that the order and line items will no longer be editable."
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:466
+msgid "Cancel Purchase Order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:471
+msgid "Are you sure you wish to cancel this purchase order?"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:477
+msgid "This purchase order can not be cancelled"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:498
+#: templates/js/translated/return_order.js:164
+msgid "After placing this order, line items will no longer be editable."
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:503
+msgid "Issue Purchase Order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:595
+msgid "At least one purchaseable part must be selected"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:620
+msgid "Quantity to order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:629
+msgid "New supplier part"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:647
+msgid "New purchase order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:688
+msgid "Add to purchase order"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:738
+msgid "Merge"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:842
+msgid "No matching supplier parts"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:861
+msgid "No matching purchase orders"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1056
+#: templates/js/translated/return_order.js:490
+msgid "Select Line Items"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1057
+#: templates/js/translated/return_order.js:491
+msgid "At least one line item must be selected"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1087
+msgid "Received Quantity"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1098
+msgid "Quantity to receive"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1153
+#: templates/js/translated/stock.js:1215
+msgid "Specify packaging for incoming stock items"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1206
+msgid "Stock Status"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1220
+msgid "Add barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1221
+msgid "Remove barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1224
+msgid "Specify location"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1232
+msgid "Add batch code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1242
+msgid "Specify packaging"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1253
+msgid "Add serial numbers"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1264
+msgid "Add note"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1321
+msgid "Serials"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1351
+msgid "Order Code"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1353
+msgid "Quantity to Receive"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1379
+#: templates/js/translated/return_order.js:559
+msgid "Confirm receipt of items"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1380
+msgid "Receive Purchase Order Items"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1448
+msgid "Scan Item Barcode"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1449
+msgid "Scan barcode on incoming item (must not match any existing stock items)"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1463
+msgid "Invalid barcode data"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1735
+#: templates/js/translated/return_order.js:285
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
+msgid "Order is overdue"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1897
+msgid "All selected Line items will be deleted"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1915
+msgid "Delete selected Line items?"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
+msgid "Duplicate Line Item"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1985
+#: templates/js/translated/return_order.js:475
+#: templates/js/translated/return_order.js:667
+#: templates/js/translated/sales_order.js:2100
+msgid "Edit Line Item"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:1996
+#: templates/js/translated/return_order.js:680
+#: templates/js/translated/sales_order.js:2111
+msgid "Delete Line Item"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
+msgid "Duplicate line item"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:2279
+#: templates/js/translated/return_order.js:799
+#: templates/js/translated/sales_order.js:2042
+msgid "Edit line item"
+msgstr ""
+
+#: templates/js/translated/purchase_order.js:2280
+#: templates/js/translated/return_order.js:803
+#: templates/js/translated/sales_order.js:2048
+msgid "Delete line item"
+msgstr ""
+
+#: templates/js/translated/report.js:68
+msgid "Report print successful"
+msgstr ""
+
+#: templates/js/translated/report.js:73
+msgid "Report printing failed"
+msgstr ""
+
+#: templates/js/translated/return_order.js:60
+#: templates/js/translated/sales_order.js:86
+msgid "Add Customer"
+msgstr ""
+
+#: templates/js/translated/return_order.js:134
+msgid "Create Return Order"
+msgstr ""
+
+#: templates/js/translated/return_order.js:149
+msgid "Edit Return Order"
+msgstr ""
+
+#: templates/js/translated/return_order.js:169
+msgid "Issue Return Order"
+msgstr ""
+
+#: templates/js/translated/return_order.js:186
+msgid "Are you sure you wish to cancel this Return Order?"
+msgstr ""
+
+#: templates/js/translated/return_order.js:193
+msgid "Cancel Return Order"
+msgstr ""
+
+#: templates/js/translated/return_order.js:218
+msgid "Complete Return Order"
+msgstr ""
+
+#: templates/js/translated/return_order.js:265
+msgid "No return orders found"
+msgstr ""
+
+#: templates/js/translated/return_order.js:299
+#: templates/js/translated/sales_order.js:783
+msgid "Invalid Customer"
+msgstr ""
+
+#: templates/js/translated/return_order.js:560
+msgid "Receive Return Order Items"
+msgstr ""
+
+#: templates/js/translated/return_order.js:691
+#: templates/js/translated/sales_order.js:2248
+msgid "No matching line items"
+msgstr ""
+
+#: templates/js/translated/return_order.js:796
+msgid "Mark item as received"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:161
+msgid "Create Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:176
+msgid "Edit Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:288
+msgid "No stock items have been allocated to this shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:294
+msgid "Complete Shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:318
+msgid "Confirm Shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:375
+msgid "No pending shipments found"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:379
+msgid "No stock items have been allocated to pending shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:389
+msgid "Complete Shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:411
+msgid "Skip"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:443
+msgid "Ship Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:459
+msgid "Ship this order?"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:465
+msgid "Order cannot be shipped as there are incomplete shipments"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:472
+msgid "This order has line items which have not been completed."
+msgstr ""
+
+#: templates/js/translated/sales_order.js:473
+msgid "Shipping this order means that the order and line items will no longer be editable."
+msgstr ""
+
+#: templates/js/translated/sales_order.js:531
+msgid "Issue this Sales Order?"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:536
+msgid "Issue Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:555
+msgid "Cancel Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:560
+msgid "Cancelling this order means that the order will no longer be editable."
+msgstr ""
+
+#: templates/js/translated/sales_order.js:614
+msgid "Create New Shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:723
+msgid "No sales orders found"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:907
+msgid "Edit shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:910
+msgid "Complete shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:915
+msgid "Delete shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:932
+msgid "Edit Shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:947
+msgid "Delete Shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:989
+msgid "No matching shipments found"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1015
+msgid "Shipment Reference"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
+msgid "Not shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1050
+msgid "Tracking"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1054
+msgid "Invoice"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1221
+msgid "Add Shipment"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1272
+msgid "Confirm stock allocation"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1273
+msgid "Allocate Stock Items to Sales Order"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1479
+msgid "No sales order allocations found"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1571
+msgid "Edit Stock Allocation"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1585
+msgid "Confirm Delete Operation"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1586
+msgid "Delete Stock Allocation"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
+#: templates/js/translated/stock.js:1861
+msgid "Shipped to customer"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
+msgid "Stock location not specified"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
+msgid "Allocate Serial Numbers"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
+msgid "Update Unit Price"
+msgstr ""
+
+#: templates/js/translated/search.js:270
+msgid "No results"
+msgstr ""
+
+#: templates/js/translated/search.js:292 templates/search.html:25
+msgid "Enter search query"
+msgstr ""
+
+#: templates/js/translated/search.js:342
+msgid "result"
+msgstr ""
+
+#: templates/js/translated/search.js:352
+msgid "Minimize results"
+msgstr ""
+
+#: templates/js/translated/search.js:355
+msgid "Remove results"
+msgstr ""
+
+#: templates/js/translated/stock.js:106
+msgid "Serialize Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:137
+msgid "Confirm Stock Serialization"
+msgstr ""
+
+#: templates/js/translated/stock.js:173
+msgid "Add Location type"
+msgstr ""
+
+#: templates/js/translated/stock.js:209
+msgid "Edit Stock Location"
+msgstr ""
+
+#: templates/js/translated/stock.js:224
+msgid "New Stock Location"
+msgstr ""
+
+#: templates/js/translated/stock.js:226
+msgid "Create another location after this one"
+msgstr ""
+
+#: templates/js/translated/stock.js:227
+msgid "Stock location created"
+msgstr ""
+
+#: templates/js/translated/stock.js:241
+msgid "Are you sure you want to delete this stock location?"
+msgstr ""
+
+#: templates/js/translated/stock.js:248
+msgid "Move to parent stock location"
+msgstr ""
+
+#: templates/js/translated/stock.js:257
+msgid "Delete Stock Location"
+msgstr ""
+
+#: templates/js/translated/stock.js:261
+msgid "Action for stock items in this stock location"
+msgstr ""
+
+#: templates/js/translated/stock.js:266
+msgid "Action for sub-locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:320
+msgid "This part cannot be serialized"
+msgstr ""
+
+#: templates/js/translated/stock.js:356
+msgid "Add given quantity as packs instead of individual items"
+msgstr ""
+
+#: templates/js/translated/stock.js:368
+msgid "Enter initial quantity for this stock item"
+msgstr ""
+
+#: templates/js/translated/stock.js:374
+msgid "Enter serial numbers for new stock (or leave blank)"
+msgstr ""
+
+#: templates/js/translated/stock.js:445
+msgid "Stock item duplicated"
+msgstr ""
+
+#: templates/js/translated/stock.js:465
+msgid "Duplicate Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:481
+msgid "Are you sure you want to delete this stock item?"
+msgstr ""
+
+#: templates/js/translated/stock.js:486
+msgid "Delete Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:507
+msgid "Edit Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:549
+msgid "Create another item after this one"
+msgstr ""
+
+#: templates/js/translated/stock.js:561
+msgid "Created new stock item"
+msgstr ""
+
+#: templates/js/translated/stock.js:574
+msgid "Created multiple stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:599
+msgid "Find Serial Number"
+msgstr ""
+
+#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
+#: templates/js/translated/stock.js:620
+msgid "Enter serial number"
+msgstr ""
+
+#: templates/js/translated/stock.js:640
+msgid "No matching serial number"
+msgstr ""
+
+#: templates/js/translated/stock.js:649
+msgid "More than one matching result found"
+msgstr ""
+
+#: templates/js/translated/stock.js:757
+msgid "Confirm stock assignment"
+msgstr ""
+
+#: templates/js/translated/stock.js:758
+msgid "Assign Stock to Customer"
+msgstr ""
+
+#: templates/js/translated/stock.js:835
+msgid "Warning: Merge operation cannot be reversed"
+msgstr ""
+
+#: templates/js/translated/stock.js:836
+msgid "Some information will be lost when merging stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:838
+msgid "Stock transaction history will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:839
+msgid "Supplier part information will be deleted for merged items"
+msgstr ""
+
+#: templates/js/translated/stock.js:933
+msgid "Confirm stock item merge"
+msgstr ""
+
+#: templates/js/translated/stock.js:934
+msgid "Merge Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1031
+msgid "Transfer Stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1032
+msgid "Move"
+msgstr ""
+
+#: templates/js/translated/stock.js:1038
+msgid "Count Stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1039
+msgid "Count"
+msgstr ""
+
+#: templates/js/translated/stock.js:1043
+msgid "Remove Stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1044
+msgid "Take"
+msgstr ""
+
+#: templates/js/translated/stock.js:1048
+msgid "Add Stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1049 users/models.py:398
+msgid "Add"
+msgstr ""
+
+#: templates/js/translated/stock.js:1053
+msgid "Delete Stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1152
+msgid "Quantity cannot be adjusted for serialized stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1152
+msgid "Specify stock quantity"
+msgstr ""
+
+#: templates/js/translated/stock.js:1168
+msgid "Adjust batch code"
+msgstr ""
+
+#: templates/js/translated/stock.js:1178
+msgid "Adjust packaging"
+msgstr ""
+
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
+msgid "Select Stock Items"
+msgstr ""
+
+#: templates/js/translated/stock.js:1257
+msgid "Select at least one available stock item"
+msgstr ""
+
+#: templates/js/translated/stock.js:1303
+msgid "Confirm stock adjustment"
+msgstr ""
+
+#: templates/js/translated/stock.js:1535
+msgid "Pass test"
+msgstr ""
+
+#: templates/js/translated/stock.js:1538
+msgid "Add test result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1541
+msgid "Edit test result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1542 templates/js/translated/stock.js:1816
+msgid "Delete test result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1561
+msgid "No test results found"
+msgstr ""
+
+#: templates/js/translated/stock.js:1625
+msgid "Test Date"
+msgstr ""
+
+#: templates/js/translated/stock.js:1638
+msgid "Test started"
+msgstr ""
+
+#: templates/js/translated/stock.js:1647
+msgid "Test finished"
+msgstr ""
+
+#: templates/js/translated/stock.js:1801
+msgid "Edit Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1821
+msgid "Delete Test Result"
+msgstr ""
+
+#: templates/js/translated/stock.js:1853
+msgid "In production"
+msgstr ""
+
+#: templates/js/translated/stock.js:1857
+msgid "Installed in Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:1865
+msgid "Assigned to Sales Order"
+msgstr ""
+
+#: templates/js/translated/stock.js:1871
+msgid "No stock location set"
+msgstr ""
+
+#: templates/js/translated/stock.js:1928
+msgid "Change stock status"
+msgstr ""
+
+#: templates/js/translated/stock.js:1937
+msgid "Merge stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:1986
+msgid "Delete stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:2039
+msgid "stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:2044
+msgid "Scan to location"
+msgstr ""
+
+#: templates/js/translated/stock.js:2055
+msgid "Stock Actions"
+msgstr ""
+
+#: templates/js/translated/stock.js:2099
+msgid "Load installed items"
+msgstr ""
+
+#: templates/js/translated/stock.js:2177
+msgid "Stock item is in production"
+msgstr ""
+
+#: templates/js/translated/stock.js:2182
+msgid "Stock item assigned to sales order"
+msgstr ""
+
+#: templates/js/translated/stock.js:2185
+msgid "Stock item assigned to customer"
+msgstr ""
+
+#: templates/js/translated/stock.js:2188
+msgid "Serialized stock item has been allocated"
+msgstr ""
+
+#: templates/js/translated/stock.js:2190
+msgid "Stock item has been fully allocated"
+msgstr ""
+
+#: templates/js/translated/stock.js:2192
+msgid "Stock item has been partially allocated"
+msgstr ""
+
+#: templates/js/translated/stock.js:2195
+msgid "Stock item has been installed in another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:2197
+msgid "Stock item has been consumed by a build order"
+msgstr ""
+
+#: templates/js/translated/stock.js:2201
+msgid "Stock item has expired"
+msgstr ""
+
+#: templates/js/translated/stock.js:2203
+msgid "Stock item will expire soon"
+msgstr ""
+
+#: templates/js/translated/stock.js:2208
+msgid "Stock item has been rejected"
+msgstr ""
+
+#: templates/js/translated/stock.js:2210
+msgid "Stock item is lost"
+msgstr ""
+
+#: templates/js/translated/stock.js:2212
+msgid "Stock item is destroyed"
+msgstr ""
+
+#: templates/js/translated/stock.js:2216
+#: templates/js/translated/table_filters.js:357
+msgid "Depleted"
+msgstr ""
+
+#: templates/js/translated/stock.js:2381
+msgid "Supplier part not specified"
+msgstr ""
+
+#: templates/js/translated/stock.js:2428
+msgid "Stock Value"
+msgstr ""
+
+#: templates/js/translated/stock.js:2556
+msgid "No stock items matching query"
+msgstr ""
+
+#: templates/js/translated/stock.js:2659
+msgid "stock locations"
+msgstr ""
+
+#: templates/js/translated/stock.js:2814
+msgid "Load Sublocations"
+msgstr ""
+
+#: templates/js/translated/stock.js:2931
+msgid "Details"
+msgstr ""
+
+#: templates/js/translated/stock.js:2935
+msgid "No changes"
+msgstr ""
+
+#: templates/js/translated/stock.js:2947
+msgid "Part information unavailable"
+msgstr ""
+
+#: templates/js/translated/stock.js:2969
+msgid "Location no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:2986
+msgid "Build order no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:3001
+msgid "Purchase order no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:3018
+msgid "Sales Order no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:3035
+msgid "Return Order no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:3054
+msgid "Customer no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:3072
+msgid "Stock item no longer exists"
+msgstr ""
+
+#: templates/js/translated/stock.js:3090
+msgid "Added"
+msgstr ""
+
+#: templates/js/translated/stock.js:3098
+msgid "Removed"
+msgstr ""
+
+#: templates/js/translated/stock.js:3170
+msgid "No installed items"
+msgstr ""
+
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
+msgid "Uninstall Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:3281
+msgid "Select stock item to uninstall"
+msgstr ""
+
+#: templates/js/translated/stock.js:3302
+msgid "Install another stock item into this item"
+msgstr ""
+
+#: templates/js/translated/stock.js:3303
+msgid "Stock items can only be installed if they meet the following criteria"
+msgstr ""
+
+#: templates/js/translated/stock.js:3305
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr ""
+
+#: templates/js/translated/stock.js:3306
+msgid "The Stock Item is currently available in stock"
+msgstr ""
+
+#: templates/js/translated/stock.js:3307
+msgid "The Stock Item is not already installed in another item"
+msgstr ""
+
+#: templates/js/translated/stock.js:3308
+msgid "The Stock Item is tracked by either a batch code or serial number"
+msgstr ""
+
+#: templates/js/translated/stock.js:3321
+msgid "Select part to install"
+msgstr ""
+
+#: templates/js/translated/stock.js:3384
+msgid "Select one or more stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:3397
+msgid "Selected stock items"
+msgstr ""
+
+#: templates/js/translated/stock.js:3401
+msgid "Change Stock Status"
+msgstr ""
+
+#: templates/js/translated/stock.js:3478
+msgid "This week"
+msgstr ""
+
+#: templates/js/translated/stock.js:3486
+msgid "This month"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:73
+msgid "Has project code"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:88
+#: templates/js/translated/table_filters.js:608
+#: templates/js/translated/table_filters.js:620
+#: templates/js/translated/table_filters.js:661
+msgid "Order status"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:161
+msgid "Testable Part"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:165
+msgid "Trackable Part"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:169
+msgid "Assembled Part"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:173
+msgid "Has Available Stock"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:189
+msgid "Allow Variant Stock"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:241
+#: templates/js/translated/table_filters.js:352
+msgid "Include sublocations"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:242
+msgid "Include locations"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:274
+msgid "Has location type"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:285
+#: templates/js/translated/table_filters.js:286
+#: templates/js/translated/table_filters.js:714
+msgid "Include subcategories"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:294
+#: templates/js/translated/table_filters.js:767
+msgid "Subscribed"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:305
+#: templates/js/translated/table_filters.js:387
+msgid "Is Serialized"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:308
+#: templates/js/translated/table_filters.js:394
+msgid "Serial number GTE"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:309
+#: templates/js/translated/table_filters.js:395
+msgid "Serial number greater than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:312
+#: templates/js/translated/table_filters.js:398
+msgid "Serial number LTE"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:313
+#: templates/js/translated/table_filters.js:399
+msgid "Serial number less than or equal to"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:316
+#: templates/js/translated/table_filters.js:317
+#: templates/js/translated/table_filters.js:390
+#: templates/js/translated/table_filters.js:391
+msgid "Serial number"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:321
+#: templates/js/translated/table_filters.js:412
+msgid "Batch code"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:332
+#: templates/js/translated/table_filters.js:703
+msgid "Active parts"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:333
+msgid "Show stock for active parts"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:338
+msgid "Part is an assembly"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:342
+msgid "Is allocated"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:343
+msgid "Item has been allocated"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:348
+msgid "Stock is available for use"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:353
+msgid "Include stock in sublocations"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:358
+msgid "Show stock items which are depleted"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:363
+msgid "Show items which are in stock"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:368
+msgid "Show items which are in production"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:373
+msgid "Include stock items for variant parts"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:378
+msgid "Show stock items which are installed in another item"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:383
+msgid "Show items which have been assigned to a customer"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:403
+#: templates/js/translated/table_filters.js:404
+msgid "Stock status"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:407
+msgid "Has batch code"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:416
+msgid "Stock item is tracked by either batch code or serial number"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:421
+msgid "Has purchase price"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:422
+msgid "Show stock items which have a purchase price set"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:426
+msgid "Expiry Date before"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:430
+msgid "Expiry Date after"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:443
+msgid "Show stock items which have expired"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:449
+msgid "Show stock which is close to expiring"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:463
+msgid "Test Passed"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:467
+msgid "Include Installed Items"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:478
+msgid "Interval start"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:482
+msgid "Interval end"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:536
+msgid "Build status"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:715
+msgid "Include parts in subcategories"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:720
+msgid "Show active parts"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:725
+msgid "Show locked parts"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:733
+msgid "Available stock"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:741
+#: templates/js/translated/table_filters.js:845
+msgid "Has Units"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:742
+msgid "Part has defined units"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:746
+msgid "Has IPN"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:747
+msgid "Part has internal part number"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:751
+msgid "In stock"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:759
+msgid "Purchasable"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:771
+msgid "Has stocktake entries"
+msgstr ""
+
+#: templates/js/translated/table_filters.js:841
+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:561
+msgid "All"
+msgstr ""
+
+#: templates/navbar.html:45
+msgid "Buy"
+msgstr ""
+
+#: templates/navbar.html:57
+msgid "Sell"
+msgstr ""
+
+#: templates/navbar.html:121
+msgid "Show Notifications"
+msgstr ""
+
+#: templates/navbar.html:124
+msgid "New Notifications"
+msgstr ""
+
+#: templates/navbar.html:144 users/models.py:201
+msgid "Admin"
+msgstr ""
+
+#: templates/navbar.html:148
+msgid "Logout"
+msgstr ""
+
+#: templates/notes_buttons.html:6 templates/notes_buttons.html:7
+msgid "Save"
+msgstr ""
+
+#: templates/notifications.html:9
+msgid "Show all notifications and history"
+msgstr ""
+
+#: templates/pui_banner.html:9
+msgid "Platform UI - the new UI for InvenTree - provides more modern administration options."
+msgstr ""
+
+#: templates/pui_banner.html:12
+msgid "Platform UI - the new UI for InvenTree - is ready to be tested."
+msgstr ""
+
+#: templates/pui_banner.html:15
+msgid "Try it out now"
+msgstr ""
+
+#: templates/pui_banner.html:15
+msgid "here"
+msgstr ""
+
+#: templates/qr_code.html:11
+msgid "QR data not provided"
+msgstr ""
+
+#: templates/registration/logged_out.html:7
+msgid "You were logged out successfully."
+msgstr ""
+
+#: templates/registration/logged_out.html:9
+msgid "Log in again"
+msgstr ""
+
+#: templates/search.html:9
+msgid "Show full search results"
+msgstr ""
+
+#: templates/search.html:12
+msgid "Clear search"
+msgstr ""
+
+#: templates/search.html:15
+msgid "Close search menu"
+msgstr ""
+
+#: templates/socialaccount/authentication_error.html:5
+msgid "Social Network Login Failure"
+msgstr ""
+
+#: templates/socialaccount/authentication_error.html:8
+msgid "Account Login Failure"
+msgstr ""
+
+#: templates/socialaccount/authentication_error.html:11
+msgid "An error occurred while attempting to login via your social network account."
+msgstr ""
+
+#: templates/socialaccount/login.html:13
+#, python-format
+msgid "Connect %(provider)s"
+msgstr ""
+
+#: templates/socialaccount/login.html:15
+#, python-format
+msgid "You are about to connect a new third party account from %(provider)s."
+msgstr ""
+
+#: templates/socialaccount/login.html:17
+#, python-format
+msgid "Sign In Via %(provider)s"
+msgstr ""
+
+#: templates/socialaccount/login.html:19
+#, python-format
+msgid "You are about to sign in using a third party account from %(provider)s."
+msgstr ""
+
+#: templates/socialaccount/login.html:24
+msgid "Continue"
+msgstr ""
+
+#: templates/socialaccount/login.html:29
+msgid "Invalid SSO Provider"
+msgstr ""
+
+#: templates/socialaccount/login.html:31
+msgid "The selected SSO provider is invalid, or has not been correctly configured"
+msgstr ""
+
+#: templates/socialaccount/signup.html:11
+#, python-format
+msgid "You are about to use your %(provider_name)s account to login to %(site_name)s."
+msgstr ""
+
+#: templates/socialaccount/signup.html:13
+msgid "As a final step, please complete the following form"
+msgstr ""
+
+#: templates/socialaccount/snippets/provider_list.html:26
+msgid "Provider has not been configured"
+msgstr ""
+
+#: templates/socialaccount/snippets/provider_list.html:35
+msgid "No SSO providers have been configured"
+msgstr ""
+
+#: templates/stats.html:13
+msgid "Instance Name"
+msgstr ""
+
+#: templates/stats.html:18
+msgid "Database"
+msgstr ""
+
+#: templates/stats.html:26
+msgid "Server is running in debug mode"
+msgstr ""
+
+#: templates/stats.html:33
+msgid "Docker Mode"
+msgstr ""
+
+#: templates/stats.html:34
+msgid "Server is deployed using docker"
+msgstr ""
+
+#: templates/stats.html:39
+msgid "Plugin Support"
+msgstr ""
+
+#: templates/stats.html:43
+msgid "Plugin support enabled"
+msgstr ""
+
+#: templates/stats.html:45
+msgid "Plugin support disabled"
+msgstr ""
+
+#: templates/stats.html:52
+msgid "Server status"
+msgstr ""
+
+#: templates/stats.html:55
+msgid "Healthy"
+msgstr ""
+
+#: templates/stats.html:57
+msgid "Issues detected"
+msgstr ""
+
+#: templates/stats.html:64
+msgid "Background Worker"
+msgstr ""
+
+#: templates/stats.html:67
+msgid "Background worker not running"
+msgstr ""
+
+#: templates/stats.html:75
+msgid "Email Settings"
+msgstr ""
+
+#: templates/stats.html:78
+msgid "Email settings not configured"
+msgstr ""
+
+#: templates/test_statistics_table.html:13
+msgid "Passed"
+msgstr ""
+
+#: templates/test_statistics_table.html:16
+msgid "Failed"
+msgstr ""
+
+#: templates/yesnolabel.html:4
+msgid "Yes"
+msgstr ""
+
+#: templates/yesnolabel.html:6
+msgid "No"
+msgstr ""
+
+#: users/admin.py:101
+msgid "Users"
+msgstr ""
+
+#: users/admin.py:102
+msgid "Select which users are assigned to this group"
+msgstr ""
+
+#: users/admin.py:246
+msgid "The following users are members of multiple groups"
+msgstr ""
+
+#: users/admin.py:280
+msgid "Personal info"
+msgstr ""
+
+#: users/admin.py:282
+msgid "Permissions"
+msgstr ""
+
+#: users/admin.py:285
+msgid "Important dates"
+msgstr ""
+
+#: users/authentication.py:29 users/models.py:138
+msgid "Token has been revoked"
+msgstr ""
+
+#: users/authentication.py:32
+msgid "Token has expired"
+msgstr ""
+
+#: users/models.py:81
+msgid "API Token"
+msgstr ""
+
+#: users/models.py:82
+msgid "API Tokens"
+msgstr ""
+
+#: users/models.py:118
+msgid "Token Name"
+msgstr ""
+
+#: users/models.py:119
+msgid "Custom token name"
+msgstr ""
+
+#: users/models.py:125
+msgid "Token expiry date"
+msgstr ""
+
+#: users/models.py:133
+msgid "Last Seen"
+msgstr ""
+
+#: users/models.py:134
+msgid "Last time the token was used"
+msgstr ""
+
+#: users/models.py:138
+msgid "Revoked"
+msgstr ""
+
+#: users/models.py:381
+msgid "Permission set"
+msgstr ""
+
+#: users/models.py:390
+msgid "Group"
+msgstr ""
+
+#: users/models.py:394
+msgid "View"
+msgstr ""
+
+#: users/models.py:394
+msgid "Permission to view items"
+msgstr ""
+
+#: users/models.py:398
+msgid "Permission to add items"
+msgstr ""
+
+#: users/models.py:402
+msgid "Change"
+msgstr ""
+
+#: users/models.py:404
+msgid "Permissions to edit items"
+msgstr ""
+
+#: users/models.py:410
+msgid "Permission to delete items"
+msgstr ""
+
diff --git a/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po
index 14c02fb132..4f725e6242 100644
--- a/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/lv/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Latvian\n"
"Language: lv_LV\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: lv\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API galapunkts nav atrasts"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Lietotājam nav atļaujas, lai apskatītu šo modeli"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Norādīta nederīga vienība ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Nav norādīta vērtība"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Nevarēja konvertēt {original} par {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr ""
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Norādītais daudzums nav derīgs"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr ""
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr ""
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Ievadiet datumu"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Piezīmes"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Vērtība '{name}' neparādās vajadzīgajā formātā"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Norādītā vērtība neatbilst nepieciešamajam formātam: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Norādītā primārā e-pasta adrese nav derīga."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Norādītais e-pasta domēns nav apstiprināts."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Reģistrācija ir izslēgta."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Norādītais daudzums nav derīgs"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Tukša sērijas numura rinda"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Atkārtojas sērijas numurs"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Nederīgs grupas diapazons: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Grupas diapazons {group} pārsniedz pieļaujamo daudzumu ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Nederīga grupas secība: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Netika atrasts neviens sērijas numurs"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Unikālo sērijas numuru skaitam ({len(serials)}) jāatbilst daudzumam ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Noņemiet HTML tagus no šīs vērtības"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Savienojuma kļūda"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Serveris atbildēja ar nederīgu statusa kodu"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Radās izņēmums"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Serveris atbildēja ar nederīgu Content-Length vērtību"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Attēla izmērs ir pārāk liels"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Attēla lejupielāde pārsniedz maksimālo izmēru"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Attālais serveris atgrieza tukšu atbildi"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Norādītajā URL nav derīgs attēla fails"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr ""
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgāru"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Čehu"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Dāņu"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Vācu"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Grieķu"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Angļu"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spāņu"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spāņu (Meksikāņu)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr ""
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persiešu"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Somu"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr ""
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr ""
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr ""
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr ""
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr ""
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr ""
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr ""
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
-
-#: InvenTree/locales.py:38
-msgid "Dutch"
-msgstr ""
-
#: InvenTree/locales.py:39
-msgid "Norwegian"
+msgid "Lithuanian"
msgstr ""
#: InvenTree/locales.py:40
-msgid "Polish"
+msgid "Latvian"
msgstr ""
#: InvenTree/locales.py:41
-msgid "Portuguese"
+msgid "Dutch"
msgstr ""
#: InvenTree/locales.py:42
-msgid "Portuguese (Brazilian)"
+msgid "Norwegian"
msgstr ""
#: InvenTree/locales.py:43
-msgid "Romanian"
+msgid "Polish"
msgstr ""
#: InvenTree/locales.py:44
-msgid "Russian"
+msgid "Portuguese"
msgstr ""
#: InvenTree/locales.py:45
-msgid "Slovak"
+msgid "Portuguese (Brazilian)"
msgstr ""
#: InvenTree/locales.py:46
-msgid "Slovenian"
+msgid "Romanian"
msgstr ""
#: InvenTree/locales.py:47
-msgid "Serbian"
+msgid "Russian"
msgstr ""
#: InvenTree/locales.py:48
-msgid "Swedish"
+msgid "Slovak"
msgstr ""
#: InvenTree/locales.py:49
-msgid "Thai"
+msgid "Slovenian"
msgstr ""
#: InvenTree/locales.py:50
-msgid "Turkish"
+msgid "Serbian"
msgstr ""
#: InvenTree/locales.py:51
-msgid "Ukrainian"
+msgid "Swedish"
msgstr ""
#: InvenTree/locales.py:52
-msgid "Vietnamese"
+msgid "Thai"
msgstr ""
#: InvenTree/locales.py:53
-msgid "Chinese (Simplified)"
+msgid "Turkish"
msgstr ""
#: InvenTree/locales.py:54
+msgid "Ukrainian"
+msgstr ""
+
+#: InvenTree/locales.py:55
+msgid "Vietnamese"
+msgstr ""
+
+#: InvenTree/locales.py:56
+msgid "Chinese (Simplified)"
+msgstr ""
+
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr ""
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
+msgid "Log in to the app"
msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr ""
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr ""
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr ""
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr ""
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr ""
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr ""
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr ""
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr ""
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr ""
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr ""
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr ""
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr ""
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr ""
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr ""
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr ""
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr ""
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr ""
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr ""
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr ""
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr ""
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr ""
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr ""
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr ""
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr ""
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr ""
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr ""
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr ""
msgid "Select currency from available options"
msgstr ""
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr ""
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr ""
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr ""
@@ -552,30 +572,30 @@ msgstr ""
msgid "Last name of the user"
msgstr ""
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr ""
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr ""
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr ""
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr ""
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr ""
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr ""
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr ""
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr ""
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr ""
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr ""
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr ""
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr ""
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr ""
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr ""
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr ""
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr ""
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr ""
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr ""
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr ""
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr ""
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr ""
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr ""
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr ""
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr ""
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr ""
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr ""
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr ""
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr ""
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr ""
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr ""
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr ""
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr ""
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr ""
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr ""
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr ""
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr ""
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr ""
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr ""
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr ""
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr ""
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr ""
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr ""
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr ""
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr ""
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr ""
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr ""
msgid "Available"
msgstr ""
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr ""
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr ""
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr ""
msgid "Build Orders"
msgstr ""
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr ""
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr ""
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr ""
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr ""
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr ""
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr ""
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr ""
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr ""
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr ""
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr ""
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr ""
-#: build/models.py:293
+#: build/models.py:292
msgid "Select location to take stock from for this build (leave blank to take from any stock location)"
msgstr ""
-#: build/models.py:298
+#: build/models.py:297
msgid "Destination Location"
msgstr ""
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr ""
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr ""
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr ""
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr ""
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr ""
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr ""
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr ""
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr ""
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr ""
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr ""
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr ""
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr ""
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr ""
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr ""
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr ""
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr ""
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr ""
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr ""
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr ""
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr ""
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr ""
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr ""
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr ""
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr ""
msgid "A build order has been completed"
msgstr ""
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr ""
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr ""
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr ""
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr ""
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr ""
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr ""
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr ""
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr ""
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr ""
-#: build/models.py:1594
+#: build/models.py:1611
#, python-brace-format
msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})"
msgstr ""
-#: build/models.py:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr ""
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr ""
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr ""
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr ""
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr ""
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr ""
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr ""
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr ""
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr ""
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr ""
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr ""
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr ""
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr ""
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr ""
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr ""
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr ""
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr ""
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr ""
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr ""
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr ""
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr ""
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr ""
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr ""
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr ""
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr ""
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr ""
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr ""
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr ""
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr ""
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr ""
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr ""
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr ""
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr ""
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr ""
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr ""
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr ""
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr ""
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr ""
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr ""
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr ""
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr ""
-#: build/serializers.py:723
+#: build/serializers.py:767
msgid "How do you want to handle extra stock items assigned to the build order"
msgstr ""
-#: build/serializers.py:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr ""
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr ""
-#: build/serializers.py:739
+#: build/serializers.py:783
msgid "Accept that stock items have not been fully allocated to this build order"
msgstr ""
-#: build/serializers.py:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr ""
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr ""
-#: build/serializers.py:755
+#: build/serializers.py:799
msgid "Accept that the required number of build outputs have not been completed"
msgstr ""
-#: build/serializers.py:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr ""
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr ""
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr ""
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr ""
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr ""
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr ""
-#: build/serializers.py:886
+#: build/serializers.py:930
msgid "bom_item.part must point to the same part as the build order"
msgstr ""
-#: build/serializers.py:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr ""
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr ""
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr ""
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr ""
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr ""
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr ""
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr ""
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr ""
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr ""
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr ""
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr ""
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr ""
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr ""
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr ""
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr ""
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr ""
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr ""
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr ""
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr ""
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr ""
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr ""
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr ""
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr ""
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr ""
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr ""
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr ""
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr ""
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr ""
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr ""
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr ""
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr ""
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr ""
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr ""
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr ""
@@ -1722,21 +1750,21 @@ msgstr ""
msgid "Production"
msgstr ""
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr ""
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr ""
@@ -1744,165 +1772,162 @@ msgstr ""
msgid "Stock required for build order"
msgstr ""
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr ""
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr ""
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr ""
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr ""
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr ""
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr ""
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr ""
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr ""
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr ""
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr ""
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr ""
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr ""
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr ""
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr ""
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr ""
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
msgid "Stock has not been fully allocated to this Build Order"
msgstr ""
-#: build/templates/build/build_base.html:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr ""
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr ""
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr ""
msgid "Overdue"
msgstr ""
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr ""
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr ""
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr ""
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ msgstr ""
msgid "Stock can be taken from any available location."
msgstr ""
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr ""
@@ -1981,23 +2008,24 @@ msgstr ""
msgid "Allocated Parts"
msgstr ""
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr ""
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr ""
@@ -2005,8 +2033,8 @@ msgstr ""
msgid "No target date set"
msgstr ""
-#: build/templates/build/detail.html:149
-#: order/templates/order/sales_order_base.html:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr ""
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr ""
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr ""
@@ -2120,7 +2148,7 @@ msgstr ""
msgid "Build Order Details"
msgstr ""
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr ""
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr ""
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr ""
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr ""
@@ -2192,1883 +2215,2039 @@ msgstr ""
msgid "Error reading file (data could be corrupted)"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr ""
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr ""
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr ""
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr ""
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr ""
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr ""
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr ""
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr ""
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr ""
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr ""
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr ""
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr ""
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr ""
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr ""
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr ""
-#: common/models.py:1233
+#: common/models.py:1290
msgid "A setting has been changed which requires a server restart"
msgstr ""
-#: common/models.py:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr ""
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr ""
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr ""
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr ""
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr ""
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr ""
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr ""
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr ""
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr ""
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr ""
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr ""
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr ""
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr ""
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr ""
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr ""
-#: common/models.py:1307
+#: common/models.py:1364
msgid "Allow download of remote images and files from external URL"
msgstr ""
-#: common/models.py:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr ""
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr ""
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr ""
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr ""
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr ""
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr ""
-#: common/models.py:1341
+#: common/models.py:1398
msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed."
msgstr ""
-#: common/models.py:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr ""
-#: common/models.py:1348
+#: common/models.py:1405
msgid "How often to check for updates (set to zero to disable)"
msgstr ""
-#: common/models.py:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr ""
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr ""
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr ""
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr ""
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr ""
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr ""
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr ""
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr ""
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr ""
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr ""
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr ""
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr ""
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr ""
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr ""
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr ""
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr ""
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr ""
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr ""
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr ""
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr ""
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr ""
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr ""
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr ""
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr ""
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr ""
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr ""
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr ""
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr ""
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr ""
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr ""
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr ""
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr ""
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr ""
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr ""
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr ""
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr ""
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr ""
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr ""
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr ""
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr ""
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr ""
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr ""
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr ""
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr ""
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr ""
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr ""
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr ""
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr ""
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr ""
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr ""
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr ""
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr ""
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr ""
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr ""
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr ""
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr ""
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr ""
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr ""
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr ""
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr ""
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr ""
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr ""
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr ""
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr ""
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr ""
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr ""
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr ""
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr ""
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr ""
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr ""
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr ""
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr ""
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr ""
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr ""
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr ""
-#: common/models.py:1676
+#: common/models.py:1745
msgid "DPI resolution when generating image files to supply to label printing plugins"
msgstr ""
-#: common/models.py:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr ""
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr ""
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr ""
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr ""
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr ""
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr ""
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr ""
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr ""
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr ""
-
-#: common/models.py:1714
-msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item"
-msgstr ""
-
-#: common/models.py:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr ""
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr ""
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr ""
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr ""
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr ""
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr ""
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr ""
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr ""
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr ""
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr ""
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr ""
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr ""
-#: common/models.py:1761
+#: common/models.py:1816
msgid "Number of days stock items are considered stale before expiring"
msgstr ""
-#: common/models.py:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr ""
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr ""
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr ""
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr ""
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr ""
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr ""
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr ""
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr ""
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr ""
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr ""
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr ""
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr ""
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr ""
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr ""
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr ""
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr ""
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr ""
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr ""
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr ""
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr ""
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr ""
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr ""
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr ""
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr ""
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr ""
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr ""
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr ""
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr ""
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr ""
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr ""
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr ""
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr ""
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr ""
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr ""
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr ""
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr ""
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr ""
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr ""
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr ""
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr ""
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr ""
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr ""
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr ""
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr ""
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr ""
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr ""
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr ""
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr ""
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr ""
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr ""
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr ""
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr ""
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr ""
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr ""
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr ""
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr ""
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr ""
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr ""
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr ""
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr ""
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr ""
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr ""
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr ""
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr ""
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr ""
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr ""
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr ""
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr ""
-
-#: common/models.py:2212
-msgid "Hide inactive parts"
-msgstr ""
-
-#: common/models.py:2214
-msgid "Hide inactive parts in results displayed on the homepage"
-msgstr ""
-
-#: common/models.py:2220
-msgid "Show subscribed parts"
-msgstr ""
-
-#: common/models.py:2221
-msgid "Show subscribed parts on the homepage"
+#: common/models.py:2224
+msgid "Create Template on Upload"
msgstr ""
#: common/models.py:2226
-msgid "Show subscribed categories"
+msgid "Create a new test template when uploading test data which does not match an existing template"
msgstr ""
-#: common/models.py:2227
-msgid "Show subscribed part categories on the homepage"
-msgstr ""
-
-#: common/models.py:2232
-msgid "Show latest parts"
-msgstr ""
-
-#: common/models.py:2233
-msgid "Show latest parts on the homepage"
-msgstr ""
-
-#: common/models.py:2238
-msgid "Show invalid BOMs"
-msgstr ""
-
-#: common/models.py:2239
-msgid "Show BOMs that await validation on the homepage"
-msgstr ""
-
-#: common/models.py:2244
-msgid "Show recent stock changes"
-msgstr ""
-
-#: common/models.py:2245
-msgid "Show recently changed stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2250
-msgid "Show low stock"
-msgstr ""
-
-#: common/models.py:2251
-msgid "Show low stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2256
-msgid "Show depleted stock"
-msgstr ""
-
-#: common/models.py:2257
-msgid "Show depleted stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2262
-msgid "Show needed stock"
-msgstr ""
-
-#: common/models.py:2263
-msgid "Show stock items needed for builds on the homepage"
-msgstr ""
-
-#: common/models.py:2268
-msgid "Show expired stock"
-msgstr ""
-
-#: common/models.py:2269
-msgid "Show expired stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2274
-msgid "Show stale stock"
-msgstr ""
-
-#: common/models.py:2275
-msgid "Show stale stock items on the homepage"
-msgstr ""
-
-#: common/models.py:2280
-msgid "Show pending builds"
+#: common/models.py:2279
+msgid "Hide inactive parts"
msgstr ""
#: common/models.py:2281
-msgid "Show pending builds on the homepage"
-msgstr ""
-
-#: common/models.py:2286
-msgid "Show overdue builds"
+msgid "Hide inactive parts in results displayed on the homepage"
msgstr ""
#: common/models.py:2287
-msgid "Show overdue builds on the homepage"
+msgid "Show subscribed parts"
msgstr ""
-#: common/models.py:2292
-msgid "Show outstanding POs"
+#: common/models.py:2288
+msgid "Show subscribed parts on the homepage"
msgstr ""
#: common/models.py:2293
-msgid "Show outstanding POs on the homepage"
+msgid "Show subscribed categories"
msgstr ""
-#: common/models.py:2298
-msgid "Show overdue POs"
+#: common/models.py:2294
+msgid "Show subscribed part categories on the homepage"
msgstr ""
#: common/models.py:2299
-msgid "Show overdue POs on the homepage"
+msgid "Show latest parts"
msgstr ""
-#: common/models.py:2304
-msgid "Show outstanding SOs"
+#: common/models.py:2300
+msgid "Show latest parts on the homepage"
msgstr ""
#: common/models.py:2305
-msgid "Show outstanding SOs on the homepage"
+msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2310
-msgid "Show overdue SOs"
+#: common/models.py:2306
+msgid "Show BOMs that await validation on the homepage"
msgstr ""
#: common/models.py:2311
-msgid "Show overdue SOs on the homepage"
+msgid "Show recent stock changes"
msgstr ""
-#: common/models.py:2316
-msgid "Show pending SO shipments"
+#: common/models.py:2312
+msgid "Show recently changed stock items on the homepage"
msgstr ""
#: common/models.py:2317
-msgid "Show pending SO shipments on the homepage"
+msgid "Show low stock"
msgstr ""
-#: common/models.py:2322
-msgid "Show News"
+#: common/models.py:2318
+msgid "Show low stock items on the homepage"
msgstr ""
#: common/models.py:2323
-msgid "Show news on the homepage"
+msgid "Show depleted stock"
msgstr ""
-#: common/models.py:2328
-msgid "Inline label display"
+#: common/models.py:2324
+msgid "Show depleted stock items on the homepage"
+msgstr ""
+
+#: common/models.py:2329
+msgid "Show needed stock"
msgstr ""
#: common/models.py:2330
-msgid "Display PDF labels in the browser, instead of downloading as a file"
+msgid "Show stock items needed for builds on the homepage"
+msgstr ""
+
+#: common/models.py:2335
+msgid "Show expired stock"
msgstr ""
#: common/models.py:2336
-msgid "Default label printer"
+msgid "Show expired stock items on the homepage"
msgstr ""
-#: common/models.py:2338
-msgid "Configure which label printer should be selected by default"
+#: common/models.py:2341
+msgid "Show stale stock"
msgstr ""
-#: common/models.py:2344
-msgid "Inline report display"
+#: common/models.py:2342
+msgid "Show stale stock items on the homepage"
msgstr ""
-#: common/models.py:2346
-msgid "Display PDF reports in the browser, instead of downloading as a file"
+#: common/models.py:2347
+msgid "Show pending builds"
msgstr ""
-#: common/models.py:2352
-msgid "Search Parts"
+#: common/models.py:2348
+msgid "Show pending builds on the homepage"
msgstr ""
#: common/models.py:2353
-msgid "Display parts in search preview window"
+msgid "Show overdue builds"
msgstr ""
-#: common/models.py:2358
-msgid "Search Supplier Parts"
+#: common/models.py:2354
+msgid "Show overdue builds on the homepage"
msgstr ""
#: common/models.py:2359
-msgid "Display supplier parts in search preview window"
+msgid "Show outstanding POs"
msgstr ""
-#: common/models.py:2364
-msgid "Search Manufacturer Parts"
+#: common/models.py:2360
+msgid "Show outstanding POs on the homepage"
msgstr ""
#: common/models.py:2365
-msgid "Display manufacturer parts in search preview window"
+msgid "Show overdue POs"
msgstr ""
-#: common/models.py:2370
-msgid "Hide Inactive Parts"
+#: common/models.py:2366
+msgid "Show overdue POs on the homepage"
msgstr ""
#: common/models.py:2371
-msgid "Excluded inactive parts from search preview window"
+msgid "Show outstanding SOs"
msgstr ""
-#: common/models.py:2376
-msgid "Search Categories"
+#: common/models.py:2372
+msgid "Show outstanding SOs on the homepage"
msgstr ""
#: common/models.py:2377
-msgid "Display part categories in search preview window"
+msgid "Show overdue SOs"
msgstr ""
-#: common/models.py:2382
-msgid "Search Stock"
+#: common/models.py:2378
+msgid "Show overdue SOs on the homepage"
msgstr ""
#: common/models.py:2383
-msgid "Display stock items in search preview window"
+msgid "Show pending SO shipments"
msgstr ""
-#: common/models.py:2388
-msgid "Hide Unavailable Stock Items"
+#: common/models.py:2384
+msgid "Show pending SO shipments on the homepage"
+msgstr ""
+
+#: common/models.py:2389
+msgid "Show News"
msgstr ""
#: common/models.py:2390
-msgid "Exclude stock items which are not available from the search preview window"
+msgid "Show news on the homepage"
msgstr ""
-#: common/models.py:2396
-msgid "Search Locations"
+#: common/models.py:2395
+msgid "Inline label display"
msgstr ""
#: common/models.py:2397
-msgid "Display stock locations in search preview window"
-msgstr ""
-
-#: common/models.py:2402
-msgid "Search Companies"
+msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr ""
#: common/models.py:2403
-msgid "Display companies in search preview window"
+msgid "Default label printer"
msgstr ""
-#: common/models.py:2408
-msgid "Search Build Orders"
+#: common/models.py:2405
+msgid "Configure which label printer should be selected by default"
msgstr ""
-#: common/models.py:2409
-msgid "Display build orders in search preview window"
+#: common/models.py:2411
+msgid "Inline report display"
msgstr ""
-#: common/models.py:2414
-msgid "Search Purchase Orders"
+#: common/models.py:2413
+msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr ""
-#: common/models.py:2415
-msgid "Display purchase orders in search preview window"
+#: common/models.py:2419
+msgid "Search Parts"
msgstr ""
#: common/models.py:2420
-msgid "Exclude Inactive Purchase Orders"
+msgid "Display parts in search preview window"
msgstr ""
-#: common/models.py:2422
-msgid "Exclude inactive purchase orders from search preview window"
+#: common/models.py:2425
+msgid "Search Supplier Parts"
msgstr ""
-#: common/models.py:2428
-msgid "Search Sales Orders"
+#: common/models.py:2426
+msgid "Display supplier parts in search preview window"
msgstr ""
-#: common/models.py:2429
-msgid "Display sales orders in search preview window"
+#: common/models.py:2431
+msgid "Search Manufacturer Parts"
msgstr ""
-#: common/models.py:2434
-msgid "Exclude Inactive Sales Orders"
+#: common/models.py:2432
+msgid "Display manufacturer parts in search preview window"
msgstr ""
-#: common/models.py:2436
-msgid "Exclude inactive sales orders from search preview window"
+#: common/models.py:2437
+msgid "Hide Inactive Parts"
msgstr ""
-#: common/models.py:2442
-msgid "Search Return Orders"
+#: common/models.py:2438
+msgid "Excluded inactive parts from search preview window"
msgstr ""
#: common/models.py:2443
-msgid "Display return orders in search preview window"
+msgid "Search Categories"
msgstr ""
-#: common/models.py:2448
-msgid "Exclude Inactive Return Orders"
+#: common/models.py:2444
+msgid "Display part categories in search preview window"
+msgstr ""
+
+#: common/models.py:2449
+msgid "Search Stock"
msgstr ""
#: common/models.py:2450
-msgid "Exclude inactive return orders from search preview window"
+msgid "Display stock items in search preview window"
msgstr ""
-#: common/models.py:2456
-msgid "Search Preview Results"
+#: common/models.py:2455
+msgid "Hide Unavailable Stock Items"
msgstr ""
-#: common/models.py:2458
-msgid "Number of results to show in each section of the search preview window"
+#: common/models.py:2457
+msgid "Exclude stock items which are not available from the search preview window"
+msgstr ""
+
+#: common/models.py:2463
+msgid "Search Locations"
msgstr ""
#: common/models.py:2464
-msgid "Regex Search"
+msgid "Display stock locations in search preview window"
msgstr ""
-#: common/models.py:2465
-msgid "Enable regular expressions in search queries"
+#: common/models.py:2469
+msgid "Search Companies"
msgstr ""
#: common/models.py:2470
-msgid "Whole Word Search"
+msgid "Display companies in search preview window"
msgstr ""
-#: common/models.py:2471
-msgid "Search queries return results for whole word matches"
+#: common/models.py:2475
+msgid "Search Build Orders"
msgstr ""
#: common/models.py:2476
-msgid "Show Quantity in Forms"
+msgid "Display build orders in search preview window"
msgstr ""
-#: common/models.py:2477
-msgid "Display available part quantity in some forms"
+#: common/models.py:2481
+msgid "Search Purchase Orders"
msgstr ""
#: common/models.py:2482
-msgid "Escape Key Closes Forms"
+msgid "Display purchase orders in search preview window"
msgstr ""
-#: common/models.py:2483
-msgid "Use the escape key to close modal forms"
-msgstr ""
-
-#: common/models.py:2488
-msgid "Fixed Navbar"
+#: common/models.py:2487
+msgid "Exclude Inactive Purchase Orders"
msgstr ""
#: common/models.py:2489
-msgid "The navbar position is fixed to the top of the screen"
-msgstr ""
-
-#: common/models.py:2494
-msgid "Date Format"
+msgid "Exclude inactive purchase orders from search preview window"
msgstr ""
#: common/models.py:2495
-msgid "Preferred format for displaying dates"
+msgid "Search Sales Orders"
msgstr ""
-#: common/models.py:2508 part/templates/part/detail.html:41
-msgid "Part Scheduling"
+#: common/models.py:2496
+msgid "Display sales orders in search preview window"
+msgstr ""
+
+#: common/models.py:2501
+msgid "Exclude Inactive Sales Orders"
+msgstr ""
+
+#: common/models.py:2503
+msgid "Exclude inactive sales orders from search preview window"
msgstr ""
#: common/models.py:2509
-msgid "Display part scheduling information"
+msgid "Search Return Orders"
msgstr ""
-#: common/models.py:2514 part/templates/part/detail.html:62
-msgid "Part Stocktake"
+#: common/models.py:2510
+msgid "Display return orders in search preview window"
msgstr ""
-#: common/models.py:2516
-msgid "Display part stocktake information (if stocktake functionality is enabled)"
+#: common/models.py:2515
+msgid "Exclude Inactive Return Orders"
msgstr ""
-#: common/models.py:2522
-msgid "Table String Length"
+#: common/models.py:2517
+msgid "Exclude inactive return orders from search preview window"
msgstr ""
-#: common/models.py:2524
-msgid "Maximum length limit for strings displayed in table views"
+#: common/models.py:2523
+msgid "Search Preview Results"
msgstr ""
-#: common/models.py:2530
-msgid "Receive error reports"
+#: common/models.py:2525
+msgid "Number of results to show in each section of the search preview window"
msgstr ""
#: common/models.py:2531
-msgid "Receive notifications for system errors"
+msgid "Regex Search"
msgstr ""
-#: common/models.py:2536
-msgid "Last used printing machines"
+#: common/models.py:2532
+msgid "Enable regular expressions in search queries"
msgstr ""
#: common/models.py:2537
+msgid "Whole Word Search"
+msgstr ""
+
+#: common/models.py:2538
+msgid "Search queries return results for whole word matches"
+msgstr ""
+
+#: common/models.py:2543
+msgid "Show Quantity in Forms"
+msgstr ""
+
+#: common/models.py:2544
+msgid "Display available part quantity in some forms"
+msgstr ""
+
+#: common/models.py:2549
+msgid "Escape Key Closes Forms"
+msgstr ""
+
+#: common/models.py:2550
+msgid "Use the escape key to close modal forms"
+msgstr ""
+
+#: common/models.py:2555
+msgid "Fixed Navbar"
+msgstr ""
+
+#: common/models.py:2556
+msgid "The navbar position is fixed to the top of the screen"
+msgstr ""
+
+#: common/models.py:2561
+msgid "Date Format"
+msgstr ""
+
+#: common/models.py:2562
+msgid "Preferred format for displaying dates"
+msgstr ""
+
+#: common/models.py:2575 part/templates/part/detail.html:41
+msgid "Part Scheduling"
+msgstr ""
+
+#: common/models.py:2576
+msgid "Display part scheduling information"
+msgstr ""
+
+#: common/models.py:2581 part/templates/part/detail.html:62
+msgid "Part Stocktake"
+msgstr ""
+
+#: common/models.py:2583
+msgid "Display part stocktake information (if stocktake functionality is enabled)"
+msgstr ""
+
+#: common/models.py:2589
+msgid "Table String Length"
+msgstr ""
+
+#: common/models.py:2591
+msgid "Maximum length limit for strings displayed in table views"
+msgstr ""
+
+#: common/models.py:2597
+msgid "Receive error reports"
+msgstr ""
+
+#: common/models.py:2598
+msgid "Receive notifications for system errors"
+msgstr ""
+
+#: common/models.py:2603
+msgid "Last used printing machines"
+msgstr ""
+
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr ""
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr ""
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr ""
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr ""
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr ""
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr ""
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr ""
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr ""
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr ""
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr ""
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr ""
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr ""
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr ""
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr ""
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr ""
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr ""
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr ""
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr ""
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr ""
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 templates/503.html:31
#: templates/hover_image.html:7 templates/hover_image.html:9
#: templates/modals.html:6
msgid "Image"
msgstr ""
-#: common/models.py:3040
+#: common/models.py:3104
msgid "Image file"
msgstr ""
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr ""
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr ""
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr ""
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr ""
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr ""
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr ""
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr ""
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr ""
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr ""
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr ""
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr ""
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr ""
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr ""
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr ""
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr ""
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr ""
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr ""
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr ""
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr ""
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr ""
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr ""
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr ""
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr ""
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr ""
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr ""
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr ""
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr ""
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr ""
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr ""
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr ""
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr ""
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr ""
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr ""
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr ""
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr ""
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr ""
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr ""
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr ""
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr ""
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr ""
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr ""
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr ""
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr ""
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr ""
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr ""
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr ""
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr ""
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr ""
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr ""
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr ""
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr ""
@@ -4605,11 +4784,12 @@ msgstr ""
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr ""
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr ""
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr ""
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4714,7 +4894,7 @@ 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ 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_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ 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_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr ""
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr ""
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr ""
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr ""
@@ -4837,8 +5017,8 @@ msgid "No manufacturer information available"
msgstr ""
#: company/templates/company/manufacturer_part.html:119
-#: company/templates/company/supplier_part.html:15 company/views.py:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr ""
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
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
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr ""
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr ""
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr ""
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr ""
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr ""
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr ""
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr ""
@@ -5022,99 +5203,99 @@ msgstr ""
msgid "New Company"
msgstr ""
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr ""
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr ""
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr ""
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr ""
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr ""
@@ -5387,751 +5564,782 @@ msgstr ""
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr ""
-#: order/models.py:310
+#: order/models.py:317
msgid "Expected date for order delivery. Order will be overdue after this date."
msgstr ""
-#: order/models.py:324
+#: order/models.py:331
msgid "Created By"
msgstr ""
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr ""
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr ""
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr ""
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr ""
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr ""
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr ""
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr ""
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr ""
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr ""
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr ""
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr ""
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr ""
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr ""
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr ""
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr ""
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr ""
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr ""
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr ""
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr ""
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr ""
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr ""
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr ""
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr ""
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr ""
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr ""
-#: order/models.py:1476
-msgid "deleted"
-msgstr ""
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr ""
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr ""
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr ""
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr ""
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr ""
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr ""
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr ""
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr ""
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr ""
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr ""
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr ""
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr ""
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr ""
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr ""
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr ""
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr ""
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr ""
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr ""
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr ""
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr ""
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr ""
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr ""
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr ""
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr ""
-#: order/models.py:1973
+#: order/models.py:2006
msgid "Cannot allocate stock item to a line with a different part"
msgstr ""
-#: order/models.py:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr ""
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr ""
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr ""
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr ""
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr ""
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr ""
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr ""
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr ""
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr ""
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr ""
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr ""
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr ""
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr ""
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr ""
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr ""
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr ""
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr ""
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr ""
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr ""
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr ""
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr ""
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr ""
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr ""
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr ""
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr ""
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr ""
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr ""
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr ""
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr ""
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr ""
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr ""
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr ""
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr ""
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr ""
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr ""
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr ""
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr ""
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr ""
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr ""
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr ""
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr ""
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr ""
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr ""
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr ""
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr ""
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr ""
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr ""
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr ""
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr ""
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
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
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
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
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
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
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr ""
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr ""
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
-msgid "Mark order as complete"
-msgstr ""
-
#: order/templates/order/order_base.html:89
#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+msgid "Mark order as complete"
+msgstr ""
+
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr ""
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr ""
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr ""
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr ""
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr ""
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr ""
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr ""
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr ""
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ msgstr ""
#: order/templates/order/purchase_order_detail.html:27
#: order/templates/order/return_order_detail.html:24
#: order/templates/order/sales_order_detail.html:24
-#: templates/js/translated/purchase_order.js:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr ""
msgid "Order Notes"
msgstr ""
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr ""
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr ""
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr ""
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr ""
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr ""
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr ""
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr ""
@@ -6383,39 +6591,40 @@ msgstr ""
msgid "Match Supplier Parts"
msgstr ""
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr ""
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr ""
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr ""
-#: order/views.py:421
+#: order/views.py:422
#, python-brace-format
msgid "Updated {part} unit-price to {price} and quantity to {qty}"
msgstr ""
-#: part/admin.py:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6427,7 +6636,7 @@ msgstr ""
msgid "Category ID"
msgstr ""
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr ""
@@ -6440,11 +6649,11 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr ""
@@ -6452,23 +6661,23 @@ msgstr ""
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr ""
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr ""
@@ -6481,8 +6690,8 @@ msgstr ""
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr ""
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr ""
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr ""
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr ""
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr ""
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr ""
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr ""
@@ -6641,789 +6854,789 @@ msgstr ""
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr ""
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr ""
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr ""
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr ""
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr ""
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr ""
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr ""
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr ""
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr ""
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr ""
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr ""
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr ""
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr ""
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr ""
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr ""
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr ""
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr ""
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr ""
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr ""
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr ""
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr ""
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr ""
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr ""
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr ""
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr ""
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr ""
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr ""
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr ""
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr ""
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr ""
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr ""
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr ""
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr ""
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr ""
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr ""
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr ""
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr ""
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr ""
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr ""
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr ""
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr ""
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr ""
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr ""
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
msgstr ""
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr ""
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr ""
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr ""
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr ""
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
msgstr ""
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
msgstr ""
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
msgstr ""
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr ""
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr ""
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr ""
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr ""
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr ""
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr ""
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr ""
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr ""
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr ""
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr ""
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr ""
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr ""
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr ""
@@ -7932,9 +8157,9 @@ msgid "Add stocktake information"
msgstr ""
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr ""
@@ -8093,142 +8318,146 @@ msgstr ""
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr ""
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr ""
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr ""
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr ""
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr ""
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr ""
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr ""
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr ""
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr ""
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr ""
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr ""
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr ""
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr ""
@@ -8324,17 +8553,17 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr ""
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr ""
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr ""
msgid "No matching action found"
msgstr ""
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr ""
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr ""
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr ""
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr ""
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr ""
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
-msgid "Source URL"
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
msgstr ""
#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
+msgid "Source URL"
+msgstr ""
+
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr ""
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr ""
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr ""
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr ""
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr ""
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr ""
@@ -9379,13 +9735,18 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr ""
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr ""
@@ -9403,15 +9764,13 @@ msgstr ""
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr ""
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr ""
@@ -9450,67 +9810,67 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr ""
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr ""
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr ""
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr ""
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr ""
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr ""
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr ""
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr ""
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr ""
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr ""
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr ""
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr ""
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr ""
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr ""
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr ""
msgid "Expiry date after"
msgstr ""
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr ""
@@ -9560,594 +9920,598 @@ msgstr ""
msgid "Quantity is required"
msgstr ""
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr ""
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr ""
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr ""
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr ""
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr ""
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr ""
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr ""
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr ""
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr ""
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr ""
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr ""
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr ""
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr ""
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr ""
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr ""
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr ""
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr ""
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr ""
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr ""
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr ""
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr ""
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr ""
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr ""
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr ""
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr ""
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr ""
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr ""
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr ""
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr ""
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr ""
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr ""
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr ""
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr ""
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr ""
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr ""
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr ""
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr ""
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr ""
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr ""
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr ""
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr ""
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
msgstr ""
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr ""
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr ""
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr ""
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr ""
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr ""
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr ""
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr ""
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr ""
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr ""
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr ""
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr ""
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr ""
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr ""
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr ""
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr ""
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr ""
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr ""
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr ""
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
msgstr ""
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr ""
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr ""
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr ""
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr ""
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr ""
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr ""
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr ""
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr ""
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
msgstr ""
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
msgstr ""
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
msgstr ""
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
msgstr ""
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
msgstr ""
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
msgstr ""
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
msgstr ""
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
msgstr ""
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
msgstr ""
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
msgstr ""
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
msgstr ""
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
msgstr ""
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
msgstr ""
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
msgstr ""
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
msgstr ""
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr ""
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
msgstr ""
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
msgstr ""
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
msgstr ""
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
msgstr ""
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
msgstr ""
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
msgstr ""
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
msgstr ""
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
msgstr ""
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
msgstr ""
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr ""
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr ""
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr ""
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr ""
msgid "Quarantined"
msgstr ""
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr ""
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr ""
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr ""
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr ""
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr ""
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr ""
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr ""
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr ""
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr ""
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr ""
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr ""
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr ""
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr ""
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr ""
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr ""
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr ""
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr ""
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr ""
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr ""
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr ""
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr ""
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr ""
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr ""
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr ""
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr ""
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr ""
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,208 +10692,212 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr ""
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr ""
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr ""
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:120
+#: stock/templates/stock/item_base.html:117
msgid "Edit stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:123
+#: stock/templates/stock/item_base.html:120
msgid "Delete stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr ""
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr ""
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
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:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
msgstr ""
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
msgstr ""
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
msgstr ""
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
msgstr ""
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr ""
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr ""
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
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
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr ""
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr ""
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
msgstr ""
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr ""
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
msgstr ""
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
msgstr ""
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
msgstr ""
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
msgstr ""
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
msgstr ""
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
msgstr ""
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:611
+#: stock/templates/stock/item_base.html:608
msgid "Select one of the part variants listed below."
msgstr ""
-#: stock/templates/stock/item_base.html:614
+#: stock/templates/stock/item_base.html:611
msgid "Warning"
msgstr ""
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
msgstr ""
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
msgstr ""
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
msgstr ""
@@ -10541,84 +10909,84 @@ msgstr ""
msgid "Select quantity to serialize, and unique serial numbers."
msgstr ""
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
msgstr ""
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
msgstr ""
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
msgstr ""
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
msgstr ""
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr ""
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr ""
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr ""
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
msgstr ""
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
msgstr ""
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
msgid "You are not in the list of owners of this location. This stock location cannot be edited."
msgstr ""
-#: stock/templates/stock/location.html:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
msgstr ""
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr ""
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr ""
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
msgstr ""
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
msgstr ""
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
msgstr ""
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
msgstr ""
@@ -10630,10 +10998,6 @@ msgstr ""
msgid "Stock Tracking"
msgstr ""
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
-
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
msgstr ""
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr ""
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr ""
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,7 @@ msgid "The following parts are low on required stock"
msgstr ""
#: templates/email/build_order_required_stock.html:18
-#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr ""
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12039,7 +12404,7 @@ msgstr ""
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 templates/modals.html:15
#: templates/modals.html:27 templates/modals.html:39 templates/modals.html:50
msgid "Close"
msgstr ""
@@ -12156,7 +12521,7 @@ msgstr ""
msgid "Substitutes Available"
msgstr ""
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
msgstr ""
@@ -12176,30 +12541,30 @@ msgstr ""
msgid "No pricing available"
msgstr ""
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
msgstr ""
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
msgstr ""
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
msgstr ""
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
msgstr ""
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
msgstr ""
@@ -12231,7 +12596,7 @@ msgstr ""
msgid "No BOM items found"
msgstr ""
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
msgstr ""
@@ -12243,396 +12608,396 @@ msgstr ""
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
msgstr ""
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
msgstr ""
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
msgstr ""
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
msgstr ""
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
msgstr ""
@@ -12641,7 +13006,7 @@ msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,7 +13784,7 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
msgstr ""
@@ -13431,7 +13796,7 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
msgstr ""
@@ -13483,23 +13848,23 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
+#: templates/js/translated/part.js:3246
msgid "Scheduled Stock Quantities"
msgstr ""
-#: templates/js/translated/part.js:3246
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
msgstr ""
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
msgstr ""
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
msgstr ""
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
msgstr ""
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
msgstr ""
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
msgstr ""
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
+#: templates/js/translated/stock.js:3305
msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3305
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po
index a39ac28d76..7b0ef6ea39 100644
--- a/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/nl/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: nl\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API eindpunt niet gevonden"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr "Ongeldige items lijst verstrekt"
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr "Ongeldige filters opgegeven"
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr "Geen items gevonden om te verwijderen"
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Gebruiker heeft geen rechten om dit model te bekijken"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
-msgstr ""
+msgstr "Ongeldige eenheid opgegeven ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Geen waarde opgegeven"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "{original} kon niet worden omgezet naar {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
-msgstr "Ongeldige hoeveelheid ingegeven"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
+msgstr "Ongeldige hoeveelheid ingevoerd"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Ongeldige hoeveelheid ingegeven ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Error details kunnen worden gevonden in het admin scherm"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Voer datum in"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Opmerkingen"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Waarde '{name}' verschijnt niet in patroonformaat"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Opgegeven waarde komt niet overeen met vereist patroon: "
@@ -126,403 +134,415 @@ msgstr "Er moet hetzelfde e-mailadres ingevoerd worden."
#: InvenTree/forms.py:221
msgid "MFA Registration is disabled."
-msgstr ""
+msgstr "Registratie is uitgeschakeld."
#: InvenTree/forms.py:259 InvenTree/forms.py:267
msgid "The provided primary email address is not valid."
msgstr "Het opgegeven primaire e-mailadres is ongeldig."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Het ingevoerde e-maildomein is niet goedgekeurd."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registratie is uitgeschakeld."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Ongeldige hoeveelheid ingevoerd"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr "Kan niet meer dan 1000 items tegelijk serienummers geven."
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Leeg serienummer"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplicaat serienummer"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr ""
+msgid "Invalid group: {group}"
+msgstr "Ongeldige groep: {group}"
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
-msgstr ""
+msgstr "Groepsbereik {group} overschrijdt toegestane hoeveelheid ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr ""
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Geen serienummers gevonden"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
-msgstr ""
+msgstr "Hoeveelheid van unieke serienummers ({s}) moet overeenkomen met de hoeveelheid ({q})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Verwijder HTML tags van deze waarde"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr "Gegevens bevatten verboden markdown inhoud"
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Verbindingsfout"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Server reageerde met ongeldige statuscode"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Uitzondering opgetreden"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Server reageerde met ongeldige Content-Length waarde"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Afbeeldingsformaat is te groot"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Beelddownload overschrijdt de maximale grootte"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Externe server heeft lege reactie teruggegeven"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Opgegeven URL is geen geldig afbeeldingsbestand"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
-msgstr ""
+msgstr "Arabisch"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgaars"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Tsjechisch"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Deens"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Duits"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Grieks"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Engels"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spaans"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spaans (Mexicaans)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
-msgstr ""
+msgstr "Estlands"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Perzisch"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Fins"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Frans"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebreeuws"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
-msgstr ""
+msgstr "Hindi"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Hongaars"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italiaans"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japans"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Koreaans"
-#: InvenTree/locales.py:37
-msgid "Latvian"
-msgstr ""
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr "Litouws"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:40
+msgid "Latvian"
+msgstr "Lets"
+
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Nederlands"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Noors"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Pools"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugees"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugees (Braziliaans)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
-msgstr ""
+msgstr "Roemeens"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Russisch"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
-msgstr ""
+msgstr "Slowaaks"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Sloveens"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Servisch"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Zweeds"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thais"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Turks"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
-msgstr ""
+msgstr "Oekraïnes"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamees"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Chinees (vereenvoudigd)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Chinees (traditioneel)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr ""
+msgid "Log in to the app"
+msgstr "Log in op de app"
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
-msgstr ""
+msgstr "E-mail"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
-msgstr ""
+msgstr "Fout bij uitvoeren plug-in validatie"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Metadata moeten een python dict object zijn"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
-msgstr ""
+msgstr "Plug-in metadata"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON metadata veld, voor gebruik door externe plugins"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Onjuist opgemaakt patroon"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Onbekende opmaaksleutel gespecificeerd"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Vereiste opmaaksleutel ontbreekt"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Referentieveld mag niet leeg zijn"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Referentie moet overeenkomen met verplicht patroon"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Referentienummer is te groot"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Ongeldige keuze"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Naam"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Omschrijving"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Omschrijving (optioneel)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Pad"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Markdown notitie (optioneel)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Streepjescode gegevens"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Streepjescode van derden"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Hash van Streepjescode"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Unieke hash van barcode gegevens"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Bestaande barcode gevonden"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Serverfout"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "Er is een fout gelogd door de server."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Moet een geldig nummer zijn"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,50 +552,50 @@ msgstr "Valuta"
msgid "Select currency from available options"
msgstr "Selecteer valuta uit beschikbare opties"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
-msgstr ""
+msgstr "Gebruikersnaam"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
-msgstr ""
+msgstr "Voornaam :"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
-msgstr ""
+msgstr "Voornaam van de gebruiker"
#: InvenTree/serializers.py:412 templates/InvenTree/settings/user.html:41
msgid "Last Name"
-msgstr ""
+msgstr "Achternaam"
#: InvenTree/serializers.py:412
msgid "Last name of the user"
-msgstr ""
+msgstr "Achternaam van de gebruiker"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
-msgstr ""
+msgstr "E-mailadres van de gebruiker"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
-msgstr ""
+msgstr "Medewerkers"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
-msgstr ""
+msgstr "Heeft deze gebruiker medewerker machtigingen"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
-msgstr ""
+msgstr "Administrator "
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
-msgstr ""
+msgstr "Is deze gebruiker een administrator "
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr ""
msgid "Active"
msgstr "Actief"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
-msgstr ""
+msgstr "Is dit gebruikersaccount actief"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
-msgstr ""
-
-#: InvenTree/serializers.py:475
-msgid "Only superusers can create new users"
-msgstr ""
-
-#: InvenTree/serializers.py:494
-msgid "Your account has been created."
-msgstr ""
-
-#: InvenTree/serializers.py:496
-msgid "Please use the password reset function to login"
-msgstr ""
+msgstr "Je bent niet bevoegd om deze gebruikersrol te wijzigen."
#: InvenTree/serializers.py:503
-msgid "Welcome to InvenTree"
-msgstr ""
+msgid "Only superusers can create new users"
+msgstr "Alleen administrators kunnen nieuwe gebruikers aanmaken"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:523
+msgid "Your account has been created."
+msgstr "Je account is aangemaakt."
+
+#: InvenTree/serializers.py:525
+msgid "Please use the password reset function to login"
+msgstr "Gebruik de wachtwoordreset functie om in te loggen"
+
+#: InvenTree/serializers.py:531
+msgid "Welcome to InvenTree"
+msgstr "Welkom bij InvenTree"
+
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Ongeldige waarde"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Data bestand"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Selecteer een bestand om te uploaden"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Niet ondersteund bestandstype"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr "Bestandsformaat niet ondersteund"
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Bestand is te groot"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Geen kolommen gevonden in het bestand"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Geen data rijen gevonden in dit bestand"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Geen data rijen opgegeven"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Geen gegevenskolommen opgegeven"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Verplichte kolom ontbreekt: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dubbele kolom: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
-msgstr ""
+msgstr "Externe afbeelding"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URL van extern afbeeldingsbestand"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Afbeeldingen van externe URL downloaden is niet ingeschakeld"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Achtergrondwerker check is gefaald"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "E-mailbackend niet geconfigureerd"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "InvenTree gezondsheidschecks mislukt"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr "Fout bij het downloaden van afbeelding van externe URL"
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
-msgstr ""
+msgstr "Onbekende database"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Ongeldige fysieke eenheid"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Geen geldige valutacode"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Overschotwaarde mag niet negatief zijn"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Overschot mag niet groter zijn dan 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Ongeldige waarde voor overschot"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Gebruikersgegevens bewerken"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Wachtwoord instellen"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Wachtwoordvelden komen niet overeen"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Onjuist wachtwoord opgegeven"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Systeeminformatie"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Over InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Bovenliggende Productie"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr "Voorouderlijke bouw"
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
-msgstr ""
+msgstr "Toegewezen aan mij"
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Uitgegeven door"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
-msgstr ""
+msgstr "Toegewezen aan"
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Productie moet geannuleerd worden voordat het kan worden verwijderd"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Verbruiksartikelen"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Optioneel"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Samenstelling"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Gevolgd"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
-msgstr ""
+msgstr "Testbaar"
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Toegewezen"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Toegewezen"
msgid "Available"
msgstr "Beschikbaar"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Onderdeel"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Productieorder"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Productieorder"
msgid "Build Orders"
msgstr "Productieorders"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
-msgstr ""
+msgstr "Assemblage stuklijst is niet gevalideerd"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr ""
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr ""
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Ongeldige keuze voor bovenliggende productie"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr ""
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr ""
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Productieorderreferentie"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Referentie"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Korte beschrijving van de build (optioneel)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Productieorder waar deze productie aan is toegewezen"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Onderdeel"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Selecteer onderdeel om te produceren"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Verkooporder Referentie"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Verkooporder waar deze productie aan is toegewezen"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Bronlocatie"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Bestemmings Locatie"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Selecteer locatie waar de voltooide items zullen worden opgeslagen"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Productiehoeveelheid"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Aantal voorraaditems om te produceren"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Voltooide voorraadartikelen"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Aantal voorraadartikelen die zijn voltooid"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Productiestatus"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Productiestatuscode"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Batchcode"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Batchcode voor deze productieuitvoer"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Aanmaakdatum"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Verwachte opleveringsdatum"
-#: build/models.py:344
+#: build/models.py:343
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:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Opleveringsdatum"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "voltooid door"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Uitgegeven door"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Gebruiker die de productieorder heeft gegeven"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Verantwoordelijke"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Gebruiker of groep verantwoordelijk voor deze bouwopdracht"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Externe Link"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Link naar externe URL"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Bouw prioriteit"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Prioriteit van deze bouwopdracht"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr ""
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Project code voor deze build order"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr ""
@@ -1110,610 +1129,619 @@ msgstr "Productieorder {build} is voltooid"
msgid "A build order has been completed"
msgstr "Een productieorder is voltooid"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr ""
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Geen productie uitvoer opgegeven"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Productie uitvoer is al voltooid"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "Productuitvoer komt niet overeen met de Productieorder"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Hoeveelheid moet groter zijn dan nul"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "Hoeveelheid kan niet groter zijn dan aantal"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr ""
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr ""
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Bouw object"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Hoeveelheid"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Vereiste hoeveelheid voor bouwopdracht"
-#: build/models.py:1585
+#: build/models.py:1602
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:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Voorraad item is te veel toegewezen"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Toewijzing hoeveelheid moet groter zijn dan nul"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Voorraadartikel"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Bron voorraadartikel"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Voorraad hoeveelheid toe te wijzen aan productie"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Installeren in"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Bestemming voorraadartikel"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Onderdeel naam"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr ""
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Productieuitvoer"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "Productieuitvoer komt niet overeen met de bovenliggende productie"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "Uitvoeronderdeel komt niet overeen met productieorderonderdeel"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Deze productieuitvoer is al voltooid"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Deze productieuitvoer is niet volledig toegewezen"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Voer hoeveelheid in voor productie uitvoer"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
-#: build/serializers.py:294
+#: build/serializers.py:341
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:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Serienummers"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Voer serienummers in voor productieuitvoeren"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Locatie"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
-msgstr ""
+msgstr "Voorraad locatie voor project uitvoer"
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Serienummers automatisch toewijzen"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Vereiste artikelen automatisch toewijzen met overeenkomende serienummers"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr ""
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr "De volgende serienummers bestaan al of zijn ongeldig"
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "Een lijst van productieuitvoeren moet worden verstrekt"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Voorraadlocatie voor geannuleerde outputs"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Toewijzingen weggooien"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Verwijder alle voorraadtoewijzingen voor geannuleerde outputs"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Reden voor annulering van bouworder(s)"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Locatie van voltooide productieuitvoeren"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
-msgstr ""
+msgstr "Status"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Incomplete Toewijzing Accepteren"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Voltooi de uitvoer als de voorraad niet volledig is toegewezen"
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
-msgstr ""
+msgstr "Toegewezen voorraad gebruiken"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
-msgstr ""
+msgstr "Verbruik elke voorraad die al is toegewezen aan deze build"
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Verwijder Incomplete Uitvoeren"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "Verwijder alle productieuitvoeren die niet zijn voltooid"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Niet toegestaan"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Accepteer zoals geconsumeerd onder deze bouwopdracht"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "De-alloceren voordat deze bouwopdracht voltooid wordt"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Overgealloceerde voorraad"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Sommige voorraadartikelen zijn overalloceerd"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Accepteer Niet-toegewezen"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Vereiste voorraad is niet volledig toegewezen"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Accepteer Onvolledig"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Vereiste productiehoeveelheid is voltooid"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "Productieorder heeft onvolledige uitvoeren"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Productielijn"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Productieuitvoer"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "Productieuitvoer moet naar dezelfde productie wijzen"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Bouw lijn-item"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "Artikel moet op voorraad zijn"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Beschikbare hoeveelheid ({q}) overschreden"
-#: build/serializers.py:955
+#: build/serializers.py:999
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:962
+#: build/serializers.py:1006
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:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Allocaties voor artikelen moeten worden opgegeven"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Voorraadlocatie waar onderdelen afkomstig zijn (laat leeg om van elke locatie te nemen)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Locatie uitsluiten"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Voorraadartikelen van deze geselecteerde locatie uitsluiten"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Uitwisselbare voorraad"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Voorraadartikelen op meerdere locaties kunnen uitwisselbaar worden gebruikt"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Vervangende Voorraad"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Toewijzing van vervangende onderdelen toestaan"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Optionele Items"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Alloceer optionele BOM items om bestelling te bouwen"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr ""
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr ""
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Fabrikant artikel nummer (MPN)"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
-msgstr ""
+msgstr "Locatie naam"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr ""
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr ""
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
-msgstr ""
+msgstr "Verpakking"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "Onderdeel-id"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr ""
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Onderdeel omschrijving"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Serienummer"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
-msgstr ""
+msgstr "Toegewezen hoeveelheid"
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
-msgstr ""
+msgstr "Beschikbare hoeveelheid"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr ""
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr ""
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Volgbaar"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr ""
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr ""
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "Stuklijstartikel"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
-msgstr ""
+msgstr "Toegewezen voorraad"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "In bestelling"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr ""
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
+#: build/serializers.py:1384 part/serializers.py:958
+msgid "External Stock"
+msgstr "Externe voorraad"
+
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
msgid "Available Stock"
msgstr "Beschikbare Voorraad"
-#: build/serializers.py:1325
+#: build/serializers.py:1386
msgid "Available Substitute Stock"
-msgstr ""
+msgstr "Beschikbare vervanging voorraad"
-#: build/serializers.py:1326
+#: build/serializers.py:1387
msgid "Available Variant Stock"
-msgstr ""
+msgstr "Beschikbare varianten voorraad"
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr ""
-
-#: build/serializers.py:1328 part/serializers.py:906
-msgid "External Stock"
-msgstr ""
-
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Bezig"
@@ -1722,21 +1750,21 @@ msgstr "Bezig"
msgid "Production"
msgstr "Productie"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Geannuleerd"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Voltooid"
@@ -1744,165 +1772,162 @@ msgstr "Voltooid"
msgid "Stock required for build order"
msgstr "Voorraad vereist voor productieorder"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Achterstallige Productieorder"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr "Productieorder {bo} is nu achterstallig"
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Miniatuurweergave van onderdeel"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Barcode acties"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "QR-code weergeven"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Barcode loskoppelen"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Koppel Barcode"
-#: build/templates/build/build_base.html:56
-#: order/templates/order/order_base.html:46
-#: order/templates/order/return_order_base.html:55
-#: order/templates/order/sales_order_base.html:55
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Afdruk acties"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Print productieorderrapport"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Productie acties"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Bewerk Productie"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Dupliceer Bouw"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Annuleer Productie"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Verwijder Productie"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Voltooi Productie"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Productiebeschrijving"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Er zijn geen productuitvoeren aangemaakt voor deze productieorder"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Productieorder is gereed om te markeren als voltooid"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Productieorder kan niet worden voltooid omdat er nog producties openstaan"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Vereiste Producthoeveelheid is nog niet bereikt"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Streefdatum"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Deze productie was verwacht op %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Deze productie was verwacht op %(target)s"
msgid "Overdue"
msgstr "Achterstallig"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13
msgid "Completed Outputs"
msgstr "Voltooide Uitvoeren"
-#: build/templates/build/build_base.html:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Verkooporder"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Prioriteit"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr ""
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr ""
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr ""
@@ -1968,8 +1994,9 @@ 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:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Bestemming"
@@ -1981,23 +2008,24 @@ msgstr "Bestemmingslocatie niet opgegeven"
msgid "Allocated Parts"
msgstr "Toegewezen Onderdelen"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
-msgstr ""
+msgstr "Batch"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Gecreëerd"
@@ -2005,8 +2033,8 @@ 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Voltooid"
@@ -2052,13 +2080,13 @@ msgid "Order required parts"
msgstr "Vereiste onderdelen bestellen"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Onderdelen bestellen"
#: build/templates/build/detail.html:205
msgid "Available stock has been filtered based on specified source location for this build order"
-msgstr ""
+msgstr "De beschikbare voorraad is gefilterd op basis van de opgegeven bron locatie voor deze build order"
#: build/templates/build/detail.html:215
msgid "Incomplete Build Outputs"
@@ -2120,7 +2148,7 @@ msgstr "Nieuwe Productieorder"
msgid "Build Order Details"
msgstr "Productieorderdetails"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr "Onvolledige Productieuitvoeren"
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr ""
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr ""
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr ""
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr ""
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr ""
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr ""
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Geen plug-in gevonden"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Niet-ondersteunde bestandsindeling: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Fout bij lezen bestand (ongeldige codering)"
@@ -2192,1883 +2215,2039 @@ msgstr "Fout bij lezen bestand (onjuiste afmeting)"
msgid "Error reading file (data could be corrupted)"
msgstr "Fout bij lezen bestand (gegevens kunnen beschadigd zijn)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Bestand"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Selecteer bestand om te uploaden"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Bestand"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "Kies {name} bestand om te uploaden"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Bijgewerkt"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Tijdstempel van laatste update"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr ""
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Unieke projectcode"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Projectbeschrijving"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr ""
-#: common/models.py:783
-msgid "Settings key (must be unique - case insensitive)"
-msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)"
+#: common/models.py:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr "Instellingen"
#: common/models.py:787
msgid "Settings value"
msgstr "Instellingswaarde"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "Gekozen waarde is geen geldige optie"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "Waarde moet een booleaanse waarde zijn"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "Waarde moet een geheel getal zijn"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "Sleutelreeks moet uniek zijn"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Geen groep"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Opnieuw opstarten vereist"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Migraties in behandeling"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr ""
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "ID Serverinstantie"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Stringbeschrijving voor de server instantie"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Gebruik de instantie naam"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Gebruik de naam van de instantie in de titelbalk"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Tonen `over` beperken"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Toon de `over` modal alleen aan superusers"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Bedrijfsnaam"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Interne bedrijfsnaam"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "Basis-URL"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "Basis URL voor serverinstantie"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Standaard Valuta"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Selecteer basisvaluta voor de berekening van prijzen"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr ""
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr ""
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr ""
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr ""
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "dagen"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr ""
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr ""
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Download van URL"
-#: common/models.py:1307
+#: common/models.py:1364
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:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Download limiet"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Maximale downloadgrootte voor externe afbeelding"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "User-agent gebruikt om te downloaden van URL"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr ""
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr ""
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Bevestiging vereist"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Boomstructuur Diepte"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Interval voor update"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automatische backup"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr "Automatische back-up van database- en mediabestanden inschakelen"
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Automatische backup interval"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr "Geef het aantal dagen op tussen geautomatiseerde backup"
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Interval Taak Verwijderen"
-#: common/models.py:1369
+#: common/models.py:1426
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:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Error Log Verwijderings Interval"
-#: common/models.py:1378
+#: common/models.py:1435
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:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Interval Verwijderen Notificatie"
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr "Meldingen van gebruikers worden verwijderd na het opgegeven aantal dagen"
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Streepjescodeondersteuning"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr ""
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr "Sla de resultaten van de barcode op"
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr "Sla de barcode scan resultaten op in de database"
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr "Maximale aantal Barcode Scans"
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr "Maximum aantal resultaten van de barcode scan op te slaan"
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Barcode Invoer Vertraging"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Barcode invoerverwerking vertraging"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Barcode Webcam Ondersteuning"
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr "Barcode via webcam scannen in browser toestaan"
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr ""
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr ""
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Herzieningen onderdeel"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Revisieveld voor onderdeel inschakelen"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr ""
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Duplicaat IPN toestaan"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Bewerken IPN toestaan"
-#: common/models.py:1454
+#: common/models.py:1523
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:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Kopieer Onderdeel Stuklijstgegevens"
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel"
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Kopieer Onderdeel Parametergegevens"
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel"
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Kopieer Onderdeel Testdata"
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel"
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Kopiëer Categorieparameter Sjablonen"
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel"
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Sjabloon"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Onderdelen zijn standaard sjablonen"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr ""
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Koopbaar"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Onderdelen kunnen standaard gekocht worden"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Verkoopbaar"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Onderdelen kunnen standaard verkocht worden"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Onderdelen kunnen standaard gevolgd worden"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Virtueel"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Onderdelen zijn standaard virtueel"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Toon Import in Weergaven"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Toon de importwizard in sommige onderdelenweergaven"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Verwante onderdelen tonen"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Verwante onderdelen voor een onderdeel tonen"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Initiële voorraadgegevens"
-#: common/models.py:1538
+#: common/models.py:1607
msgid "Allow creation of initial stock when adding a new part"
msgstr "Aanmaken van eerste voorraad toestaan bij het toevoegen van een nieuw onderdeel"
-#: common/models.py:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Initiële leveranciergegevens"
-#: common/models.py:1545
+#: common/models.py:1614
msgid "Allow creation of initial supplier data when adding a new part"
msgstr "Aanmaken van eerste leveranciersgegevens toestaan bij het toevoegen van een nieuw onderdeel"
-#: common/models.py:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Onderdelennaam Weergaveopmaak"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Opmaak om de onderdeelnaam weer te geven"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Standaardicoon voor onderdeel catagorie"
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)"
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Forceer Parameter Eenheden"
-#: common/models.py:1566
+#: common/models.py:1635
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:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Minimaal aantal prijs decimalen"
-#: common/models.py:1574
+#: common/models.py:1643
msgid "Minimum number of decimal places to display when rendering pricing data"
msgstr "Minimaal aantal decimalen om weer te geven bij het weergeven van prijsgegevens"
-#: common/models.py:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr "Maximum prijs decimalen"
-#: common/models.py:1587
+#: common/models.py:1656
msgid "Maximum number of decimal places to display when rendering pricing data"
msgstr "Maximum aantal decimalen om weer te geven bij het weergeven van prijsgegevens"
-#: common/models.py:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Gebruik leveranciersprijzen"
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening"
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Aankoopgeschiedenis overschrijven"
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historische order prijzen overschrijven de prijzen van de leverancier"
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Gebruik voorraaditem prijzen"
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Gebruik prijzen van handmatig ingevoerde voorraadgegevens voor prijsberekeningen"
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Voorraad artikelprijs leeftijd"
-#: common/models.py:1624
+#: common/models.py:1693
msgid "Exclude stock items older than this number of days from pricing calculations"
msgstr "Voorraaditems ouder dan dit aantal dagen uitsluiten van prijsberekeningen"
-#: common/models.py:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Gebruik variantprijzen"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Variantenprijzen opnemen in de totale prijsberekening"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Alleen actieve varianten"
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Gebruik alleen actieve variantonderdelen voor het berekenen van variantprijzen"
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Prijzen Herbouw interval"
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr "Aantal dagen voordat de prijzen voor onderdelen automatisch worden bijgewerkt"
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Interne Prijzen"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Inschakelen van interne prijzen voor onderdelen"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Interne prijs overschrijven"
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr "Indien beschikbaar, interne prijzen overschrijven berekeningen van prijsbereik"
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Printen van labels Inschakelen"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Printen van labels via de webinterface inschakelen"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "Label Afbeelding DPI"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Activeer Rapportages"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Activeer het genereren van rapporten"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Foutopsporingsmodus"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Rapporten genereren in debug modus (HTML uitvoer)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Paginagrootte"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Standaard paginagrootte voor PDF rapporten"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Activeer Testrapporten"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Activeer het genereren van testrapporten"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Testrapporten Toevoegen"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Globaal unieke serienummers"
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr "Serienummers voor voorraaditems moeten globaal uniek zijn"
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Serienummers automatisch invullen"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Automatisch invullen van serienummer in formulieren"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Verwijder uitgeputte voorraad"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
-msgstr ""
+msgstr "Bepaalt standaard gedrag wanneer een voorraadartikel leeg is"
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Batchcode Sjabloon"
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr "Sjabloon voor het genereren van standaard batchcodes voor voorraadartikelen"
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Verlopen Voorraad"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Verlopen voorraad functionaliteit inschakelen"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Verkoop Verlopen Voorraad"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Verkoop verlopen voorraad toestaan"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Voorraad Vervaltijd"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Produceer Verlopen Voorraad"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Sta productie met verlopen voorraad toe"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Voorraad Eigenaar Toezicht"
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen"
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Voorraadlocatie standaard icoon"
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr "Standaard locatie pictogram (leeg betekent geen icoon)"
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Geïnstalleerde voorraad items weergeven"
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen"
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
-msgstr ""
+msgstr "Geïnstalleerde voorraad items moeten in de BOM voor het bovenliggende deel bestaan"
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
-msgstr ""
+msgstr "Sta 'Niet op voorraad overschrijving' toe"
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
-msgstr ""
+msgstr "Toestaan dat voorraadartikelen die niet op voorraad zijn worden overgebracht tussen voorraadlocaties"
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Productieorderreferentiepatroon"
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld"
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Retourorders inschakelen"
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface"
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Retourorder referentie patroon"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Bewerk voltooide retourorders"
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid"
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Verkooporderreferentiepatroon"
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld"
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Standaard Verzending Verkooporder"
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr "Aanmaken standaard verzending bij verkooporders inschakelen"
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Bewerk voltooide verkooporders"
-#: common/models.py:1908
+#: common/models.py:1963
msgid "Allow editing of sales orders after they have been shipped or completed"
msgstr "Bewerken van verkooporders toestaan nadat deze zijn verzonden of voltooid"
-#: common/models.py:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Inkooporderreferentiepatroon"
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld"
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Bewerk voltooide verkooporders"
-#: common/models.py:1938
+#: common/models.py:1993
msgid "Allow editing of purchase orders after they have been shipped or completed"
msgstr "Bewerken van inkooporders toestaan nadat deze zijn verzonden of voltooid"
-#: common/models.py:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr ""
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr ""
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Wachtwoord vergeten functie inschakelen"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's"
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Registratie inschakelen"
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen"
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "SSO inschakelen"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "SSO inschakelen op de inlogpagina's"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Schakel gebruikersregistratie met SSO in"
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Zelfregistratie voor gebruikers middels SSO op de inlogpagina's inschakelen"
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "E-mailadres verplicht"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "SSO-gebruikers automatisch invullen"
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen"
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "E-mail twee keer"
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen"
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Wachtwoord tweemaal"
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden"
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Toegestane domeinen"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)"
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Groep bij aanmelding"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "MFA afdwingen"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Gebruikers moeten multifactor-beveiliging gebruiken."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Controleer plugins bij het opstarten"
-#: common/models.py:2061
+#: common/models.py:2116
msgid "Check that all plugins are installed on startup - enable in container environments"
msgstr "Controleer of alle plug-ins zijn geïnstalleerd bij het opstarten - inschakelen in container-omgevingen"
-#: common/models.py:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "Activeer URL-integratie"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Plugins toestaan om URL-routes toe te voegen"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Activeer navigatie integratie"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Plugins toestaan om te integreren in navigatie"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "Activeer app integratie"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Activeer plug-ins om apps toe te voegen"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Activeer planning integratie"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Activeer plugin om periodiek taken uit te voeren"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Activeer evenement integratie"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Activeer plugin om op interne evenementen te reageren"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr "Interface integratie activeren"
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr "Plug-ins inschakelen om te integreren in de gebruikersinterface"
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Activeer project codes"
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr "Activeer project codes voor het bijhouden van projecten"
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Voorraadcontrole functionaliteit"
-#: common/models.py:2119
+#: common/models.py:2181
msgid "Enable stocktake functionality for recording stock levels and calculating stock value"
msgstr "Schakel voorraadfunctionaliteit in voor het opnemen van voorraadniveaus en het berekenen van voorraadwaarde"
-#: common/models.py:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr "Externe locaties uitsluiten"
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen"
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Automatische Voorraadcontrole Periode"
-#: common/models.py:2135
+#: common/models.py:2197
msgid "Number of days between automatic stocktake recording (set to zero to disable)"
msgstr "Aantal dagen tussen automatische voorraadopname (ingesteld op nul om uit te schakelen)"
-#: common/models.py:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr "Rapport Verwijdering Interval"
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen"
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr ""
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr ""
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-msgid "Settings key (must be unique - case insensitive"
-msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig"
+#: common/models.py:2224
+msgid "Create Template on Upload"
+msgstr "Maak template aan bij het uploaden"
-#: common/models.py:2212
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr "Maak een nieuw testsjabloon bij het uploaden van testgegevens die niet overeenkomen met een bestaande sjabloon"
+
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Inactieve Onderdelen Verbergen"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Verberg inactieve delen bij items op de homepage"
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Toon geabonneerde onderdelen"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Toon geabonneerde onderdelen op de homepage"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Toon geabonneerde categorieën"
-#: common/models.py:2227
+#: common/models.py:2294
msgid "Show subscribed part categories on the homepage"
msgstr "Toon geabonneerde onderdeel categorieën op de startpagina"
-#: common/models.py:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Toon laatste onderdelen"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Toon laatste onderdelen op de startpagina"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2239
+#: common/models.py:2306
msgid "Show BOMs that await validation on the homepage"
msgstr "Laat BOMs zien die wachten op validatie op de startpagina"
-#: common/models.py:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Toon recente voorraadwijzigingen"
-#: common/models.py:2245
+#: common/models.py:2312
msgid "Show recently changed stock items on the homepage"
msgstr "Toon recent aangepaste voorraadartikelen op de startpagina"
-#: common/models.py:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Toon lage voorraad"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Toon lage voorraad van artikelen op de startpagina"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Toon lege voorraad"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Toon lege voorraad van artikelen op de startpagina"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Toon benodigde voorraad"
-#: common/models.py:2263
+#: common/models.py:2330
msgid "Show stock items needed for builds on the homepage"
msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina"
-#: common/models.py:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Toon verlopen voorraad"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Toon verlopen voorraad van artikelen op de startpagina"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Toon verouderde voorraad"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Toon verouderde voorraad van artikelen op de startpagina"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Toon openstaande producties"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Toon openstaande producties op de startpagina"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Toon achterstallige productie"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Toon achterstallige producties op de startpagina"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Toon uitstaande PO's"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Toon uitstaande PO's op de startpagina"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Toon achterstallige PO's"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Toon achterstallige PO's op de startpagina"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Toon uitstaande SO's"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Toon uitstaande SO's op de startpagina"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Toon achterstallige SO's"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Toon achterstallige SO's op de startpagina"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
msgstr "Toon in behandeling SO verzendingen"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina"
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Nieuws tonen"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Nieuws op de startpagina weergeven"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Inline labelweergave"
-#: common/models.py:2330
+#: common/models.py:2397
msgid "Display PDF labels in the browser, instead of downloading as a file"
msgstr "PDF-labels in browser weergeven, in plaats van als bestand te downloaden"
-#: common/models.py:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Standaard label printer"
-#: common/models.py:2338
+#: common/models.py:2405
msgid "Configure which label printer should be selected by default"
msgstr "Instellen welke label printer standaard moet worden geselecteerd"
-#: common/models.py:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Inline rapport weergeven"
-#: common/models.py:2346
+#: common/models.py:2413
msgid "Display PDF reports in the browser, instead of downloading as a file"
msgstr "PDF-rapporten in de browser weergeven, in plaats van als bestand te downloaden"
-#: common/models.py:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Zoek Onderdelen"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
msgstr "Onderdelen weergeven in zoekscherm"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Zoek leveranciersonderdelen"
-#: common/models.py:2359
+#: common/models.py:2426
msgid "Display supplier parts in search preview window"
msgstr "Leveranciersonderdelen weergeven in zoekscherm"
-#: common/models.py:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Fabrikant onderdelen zoeken"
-#: common/models.py:2365
+#: common/models.py:2432
msgid "Display manufacturer parts in search preview window"
msgstr "Fabrikant onderdelen weergeven in zoekscherm"
-#: common/models.py:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Inactieve Onderdelen Verbergen"
-#: common/models.py:2371
+#: common/models.py:2438
msgid "Excluded inactive parts from search preview window"
msgstr "Inactieve verkooporders weglaten in het zoekvenster"
-#: common/models.py:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Zoek categorieën"
-#: common/models.py:2377
+#: common/models.py:2444
msgid "Display part categories in search preview window"
msgstr "Toon onderdeelcategorieën in zoekvenster"
-#: common/models.py:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Zoek in Voorraad"
-#: common/models.py:2383
+#: common/models.py:2450
msgid "Display stock items in search preview window"
msgstr "Toon voorraad items in zoekvenster"
-#: common/models.py:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Verberg niet beschikbare voorraad items"
-#: common/models.py:2390
+#: common/models.py:2457
msgid "Exclude stock items which are not available from the search preview window"
msgstr "Voorraadartikelen die niet beschikbaar zijn niet in het zoekvenster weergeven"
-#: common/models.py:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Locaties doorzoeken"
-#: common/models.py:2397
+#: common/models.py:2464
msgid "Display stock locations in search preview window"
msgstr "Toon voorraadlocaties in zoekvenster"
-#: common/models.py:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Zoek bedrijven"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Toon bedrijven in zoekvenster"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Zoek Bouworders"
-#: common/models.py:2409
+#: common/models.py:2476
msgid "Display build orders in search preview window"
msgstr "Toon bouworders in zoekvenster"
-#: common/models.py:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Inkooporders Zoeken"
-#: common/models.py:2415
+#: common/models.py:2482
msgid "Display purchase orders in search preview window"
msgstr "Toon inkooporders in het zoekvenster"
-#: common/models.py:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Inactieve Inkooporders Weglaten"
-#: common/models.py:2422
+#: common/models.py:2489
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Inactieve inkooporders weglaten in het zoekvenster"
-#: common/models.py:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Verkooporders zoeken"
-#: common/models.py:2429
+#: common/models.py:2496
msgid "Display sales orders in search preview window"
msgstr "Toon verkooporders in het zoekvenster"
-#: common/models.py:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Inactieve Verkooporders Weglaten"
-#: common/models.py:2436
+#: common/models.py:2503
msgid "Exclude inactive sales orders from search preview window"
msgstr "Inactieve verkooporders weglaten in het zoekvenster"
-#: common/models.py:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Zoek retourorders"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr "Toon bouworders in zoekvenster"
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr "Inactieve retourbestellingen weglaten"
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr "Inactieve retourorders uitsluiten in zoekvenster"
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Zoekvoorbeeld resultaten"
-#: common/models.py:2458
+#: common/models.py:2525
msgid "Number of results to show in each section of the search preview window"
msgstr "Aantal resultaten om weer te geven in elk gedeelte van het zoekvenster"
-#: common/models.py:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Regex zoeken"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr "Schakel reguliere expressies in zoekopdrachten in"
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr "Hele woorden zoeken"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten"
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Toon hoeveelheid in formulieren"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "Escape-toets sluit formulieren"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Vaste navigatiebalk"
-#: common/models.py:2489
+#: common/models.py:2556
msgid "The navbar position is fixed to the top of the screen"
msgstr "De navigatiebalk positie is gefixeerd aan de bovenkant van het scherm"
-#: common/models.py:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Datum formaat"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Voorkeursindeling voor weergave van datums"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Onderdeel planning"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Toon informatie voor het plannen van onderdelen"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Voorraadcontrole onderdeel"
-#: common/models.py:2516
+#: common/models.py:2583
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)"
-#: common/models.py:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Tabel tekenreekslengte"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr ""
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr "Foutrapportages ontvangen"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr "Meldingen ontvangen van systeemfouten"
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Gebruiker"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr ""
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Prijs"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr ""
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr "Eindpunt"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Eindpunt waarop deze webhook wordt ontvangen"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Naam van deze webhook"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Is deze webhook actief"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr ""
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Token voor toegang"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Geheim"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Gedeeld geheim voor HMAC"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "Bericht ID"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr ""
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr ""
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr ""
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Koptekst"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Koptekst van dit bericht"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Berichtinhoud"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Inhoud van dit bericht"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr ""
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Aan gewerkt"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr ""
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Titel"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
-msgstr ""
+msgstr "Koppeling"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Gepubliceerd"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr ""
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Samenvatting"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Gelezen"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr ""
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Afbeelding"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr ""
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr ""
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr ""
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbool"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr ""
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definitie"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr ""
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Bijlage"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Ontbrekend bestand"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Externe link ontbreekt"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Bestand als bijlage selecteren"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Opmerking"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr ""
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr ""
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr ""
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr ""
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr ""
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr ""
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr "Label"
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr "Barcode Scan"
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr "Barcode gegevens"
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr "Gebruiker die de barcode gescand heeft"
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr "Datum en tijd van de streepjescode scan"
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr "Adres eindpunt dat de streepjescode verwerkt"
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr ""
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr "Contextgegevens voor de barcode scan"
+
+#: common/models.py:3562
+msgid "Response"
+msgstr "Reactie"
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr "Reactiegegevens van de barcode scan"
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Resultaat"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr "Was de barcode succesvol gescand?"
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Nieuw: {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
msgid "A new order has been created and assigned to you"
msgstr "Een nieuwe order is aangemaakt en aan u toegewezen"
-#: common/notifications.py:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr ""
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr ""
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr ""
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr "Artikelen zijn ontvangen tegen een inkooporder"
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr ""
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr ""
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr ""
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr ""
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr ""
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr ""
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr ""
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr ""
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr ""
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr ""
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr ""
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr ""
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Bestandsnaam"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr ""
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr ""
@@ -4116,15 +4295,15 @@ msgstr "Vergelijk Velden"
msgid "Match Items"
msgstr ""
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr ""
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Geïmporteerde onderdelen"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr ""
msgid "Supplier is Active"
msgstr ""
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Bedrijf"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Bedrijven"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr ""
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr ""
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr ""
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "URL bedrijfswebsite"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Telefoonnummer"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Telefoonnummer voor contact"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Contact e-mailadres"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr ""
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Contactpunt"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Link naar externe bedrijfsinformatie"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr ""
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr ""
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr ""
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr ""
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr ""
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr ""
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Fabriceert dit bedrijf onderdelen?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Standaardvaluta die gebruikt wordt voor dit bedrijf"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Adres"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr ""
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr ""
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr ""
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr ""
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr ""
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr ""
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr ""
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr ""
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr ""
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr ""
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr ""
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr ""
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr ""
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr ""
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr ""
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr ""
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr ""
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr ""
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr ""
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr ""
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr ""
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr ""
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Fabrikant onderdeel"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Basis onderdeel"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Onderdeel selecteren"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Fabrikant"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Fabrikant selecteren"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr ""
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "URL voor externe link van het fabrikant onderdeel"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Omschrijving onderdeel fabrikant"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr ""
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Parameternaam"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Waarde"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Parameterwaarde"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Eenheden"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Parameter eenheden"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Leveranciersonderdeel"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr ""
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr ""
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderdeel"
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Leverancier"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Leverancier selecteren"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
-msgstr ""
+msgstr "Voorraad beheers eenheid voor leveranciers"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr ""
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Selecteer fabrikant onderdeel"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr ""
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr ""
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Opmerking"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "basisprijs"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimale kosten (bijv. voorraadkosten)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr ""
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr ""
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr ""
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "meerdere"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Order meerdere"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr ""
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr ""
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr ""
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr ""
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr ""
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr ""
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
-msgstr ""
+msgstr "Op voorraad"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr ""
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Inkooporder aanmaken"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Bedrijfsinformatie bewerken"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Bedrijf bewerken"
@@ -4605,11 +4784,12 @@ msgstr "Bedrijf verwijderen"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Afbeelding downloaden van URL"
msgid "Delete image"
msgstr ""
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Klant"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Telefoon"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr ""
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr ""
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr ""
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr ""
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr ""
@@ -4709,12 +4889,12 @@ msgstr "Nieuw fabrikant onderdeel"
#: company/templates/company/detail.html:65
msgid "Supplier Stock"
-msgstr ""
+msgstr "Leverancier voorraad"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Nieuwe Inkooporder"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4760,11 +4940,11 @@ msgstr "Nieuwe Verkooporder"
#: company/templates/company/detail.html:126
msgid "Assigned Stock"
-msgstr ""
+msgstr "Toegewezen voorraad"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Fabrikanten"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Order onderdeel"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Fabrikant onderdeel bewerken"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Fabrikant onderdeel verwijderen"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Intern onderdeel"
@@ -4837,8 +5017,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Toegewezen Voorraadartikelen"
msgid "Contacts"
msgstr ""
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
msgid "Edit Supplier Part"
msgstr "Bewerk Leveranciers onderdeel"
-#: company/templates/company/supplier_part.html:68
#: company/templates/company/supplier_part.html:69
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Dupliceer Leveranciers onderdeel"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Verwijder leveranciers onderdeel"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Geen leveranciersinformatie beschikbaar"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr ""
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
-msgstr ""
+msgstr "Voorraad leverancier"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Nieuw voorraadartikel aanmaken"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Nieuw Voorraadartikel"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Leverancier Onderdelenorders"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Prijsinformatie"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr ""
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr ""
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Voorraadartikelen"
@@ -5022,99 +5203,99 @@ msgstr "Nieuwe Klant"
msgid "New Company"
msgstr "Nieuw Bedrijf"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Geplaatst"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr ""
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr ""
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,831 +5488,858 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Totaalprijs"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr ""
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Order Referentie"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr ""
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr ""
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Inkooporder"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
-msgstr ""
+msgstr "Retour bestelling"
#: order/models.py:90
msgid "Total price for this order"
msgstr ""
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr ""
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
msgid "Currency for this order (leave blank to use company default)"
msgstr ""
-#: order/models.py:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr ""
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr ""
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr ""
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Link naar externe pagina"
-#: order/models.py:310
+#: order/models.py:317
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:324
+#: order/models.py:331
msgid "Created By"
msgstr "Aangemaakt Door"
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr "Gebruiker of groep verantwoordelijk voor deze order"
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr ""
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr ""
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Orderreferentie"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Inkooporder status"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Bedrijf waar de artikelen van worden besteld"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Leveranciersreferentie"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Order referentiecode van leverancier"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "ontvangen door"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Datum van uitgifte"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Order uitgegeven op datum"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Order voltooid op datum"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr "Onderdeelleverancier moet overeenkomen met de Inkooporderleverancier"
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "Hoeveelheid moet een positief getal zijn"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Bedrijf waaraan de artikelen worden verkocht"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Klantreferentie "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Klant order referentiecode"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Verzenddatum"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "verzonden door"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr ""
-#: order/models.py:1088
+#: order/models.py:1105
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:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "Order kan niet worden voltooid omdat er onvolledige artikelen aanwezig zijn"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Hoeveelheid artikelen"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Artikelregel referentie"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Artikel notities"
-#: order/models.py:1393
+#: order/models.py:1410
msgid "Target date for this line item (leave blank to use the target date from the order)"
msgstr ""
-#: order/models.py:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr ""
-#: order/models.py:1420
-msgid "Context"
-msgstr ""
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "Additionele context voor deze regel"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Stukprijs"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "Leveranciersonderdeel moet overeenkomen met leverancier"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "verwijderd"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Leveranciersonderdeel"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Ontvangen"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Aantal ontvangen artikelen"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Inkoopprijs"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Aankoopprijs per stuk"
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr "Waar wil de inkoper dat dit artikel opgeslagen wordt?"
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr "Virtueel onderdeel kan niet worden toegewezen aan een verkooporder"
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr "Alleen verkoopbare onderdelen kunnen aan een verkooporder worden toegewezen"
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Verkoopprijs"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Prijs per stuk"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Verzonden"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Verzonden hoeveelheid"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Datum van verzending"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr ""
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr ""
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Gecontroleerd door"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Gebruiker die deze zending gecontroleerd heeft"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Zending"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Zendingsnummer"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Volgnummer"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Zending volginformatie"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Factuurnummer"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Referentienummer voor bijbehorende factuur"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "Verzending is al verzonden"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "Zending heeft geen toegewezen voorraadartikelen"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "Voorraadartikel is niet toegewezen"
-#: order/models.py:1973
+#: order/models.py:2006
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:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr "Kan voorraad niet toewijzen aan een regel zonder onderdeel"
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Toewijzingshoeveelheid kan niet hoger zijn dan de voorraadhoeveelheid"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr "Hoeveelheid moet 1 zijn voor geserialiseerd voorraadartikel"
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "Verkooporder komt niet overeen met zending"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "Verzending komt niet overeen met verkooporder"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Regel"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Verzendreferentie verkooporder"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Artikel"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Selecteer voorraadartikel om toe te wijzen"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Voer voorraadtoewijzingshoeveelheid in"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr ""
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr ""
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr ""
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr ""
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr ""
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr ""
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr ""
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr ""
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr ""
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr ""
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr "Bestelling ID"
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr "ID van de bestelling om te dupliceren"
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr "Kopieer regels"
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr "Kopieer regelitems uit de oorspronkelijke bestelling"
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr "Extra regels kopiëren"
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr "Extra regelitems van de oorspronkelijke bestelling kopiëren"
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
-msgid "Supplier Name"
-msgstr ""
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr "Artikel dupliceren"
-#: order/serializers.py:331
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr "Specificeer opties voor het dupliceren van deze bestelling"
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr "Ongeldige order ID"
+
+#: order/serializers.py:374 stock/admin.py:196
+msgid "Supplier Name"
+msgstr "Leveranciers Naam"
+
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "Order kan niet worden geannuleerd"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr ""
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr ""
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "Order is niet open"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Valuta Inkoopprijs"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Intern Onderdeelnummer"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "Leveranciersonderdeel moet worden gespecificeerd"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "Inkooporder moet worden gespecificeerd"
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr "De leverancier moet overeenkomen met de inkooporder"
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "Inkooporder moet overeenkomen met de leverancier"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Artikel"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "Artikelregel komt niet overeen met inkooporder"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Selecteer bestemmingslocatie voor ontvangen artikelen"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
-msgstr ""
+msgstr "Voer batch code in voor inkomende voorraad items"
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Voer serienummers in voor inkomende voorraadartikelen"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
-msgstr ""
+msgstr "Overschrijf verpakkingsinformatie voor binnenkomende voorraad"
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
-msgstr ""
+msgstr "Extra opmerking voor inkomende voorraad items"
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr ""
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr ""
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Streepjescode is al in gebruik"
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen"
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Artikelen moeten worden opgegeven"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "Bestemmingslocatie moet worden opgegeven"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "Geleverde streepjescodewaarden moeten uniek zijn"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Valuta verkoopprijs"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr "Toegewezen items"
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr "Geen verzenddetails opgegeven"
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr "Artikelregel is niet gekoppeld aan deze bestelling"
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr "Hoeveelheid moet positief zijn"
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Voer serienummers in om toe te wijzen"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr "Verzending is al verzonden"
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr "Zending is niet gekoppeld aan deze bestelling"
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr "Geen overeenkomst gevonden voor de volgende serienummers"
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
-msgstr "De volgende serienummers zijn al toegewezen"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr "De volgende serienummers zijn niet beschikbaar"
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr ""
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr ""
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr ""
-#: order/serializers.py:1790
+#: order/serializers.py:1942
msgid "Items can only be received against orders which are in progress"
msgstr ""
-#: order/serializers.py:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr ""
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Kwijt"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Retour"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "In Behandeling"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Retour"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Herstel"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Vervangen"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Restitutie"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Afwijzen"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr "Achterstallige inkooporder"
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr "Inkooporder {po} is nu achterstallig"
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr "Achterstallige Verkooporder"
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr "Verkooporder {so} is nu achterstallig"
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
msgid "Print purchase order report"
msgstr "Print rapport inkooporder"
-#: order/templates/order/order_base.html:53
-#: order/templates/order/return_order_base.html:62
-#: order/templates/order/sales_order_base.html:62
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr "Exporteer order naar bestand"
-#: order/templates/order/order_base.html:59
-#: order/templates/order/return_order_base.html:72
-#: order/templates/order/sales_order_base.html:71
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr "Order acties"
-#: order/templates/order/order_base.html:64
-#: order/templates/order/return_order_base.html:76
-#: order/templates/order/sales_order_base.html:75
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Order bewerken"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr ""
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Order annuleren"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr ""
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Order markeren als voltooid"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Order Voltooien"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr ""
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Order Beschrijving"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr "Geen leveranciersinformatie beschikbaar"
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr "Afgeronde artikelen"
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Incompleet"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr "Uitgegeven"
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Totale kosten"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "Totale kosten konden niet worden berekend"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr ""
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Ontvangen Artikelen"
msgid "Order Notes"
msgstr "Ordernotities"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr ""
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr ""
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr "Pakbon afdrukken"
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Klantreferentie"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr ""
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr ""
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr "Print verkooporderrapport"
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr ""
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr "Voltooi Verkooporder"
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr "Deze Verkooporder is niet volledig toegewezen"
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr "Verzendingen in behandeling"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Acties"
@@ -6383,39 +6591,40 @@ msgstr "Nieuwe Verzending"
msgid "Match Supplier Parts"
msgstr "Leveranciersonderdelen Vergelijken"
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr "Verkooporder niet gevonden"
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Prijs niet gevonden"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "{part} stukprijs bijgewerkt naar {price}"
-#: order/views.py:421
+#: order/views.py:422
#, 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:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
-msgstr ""
+msgstr "IPN"
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr ""
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr ""
@@ -6425,12 +6634,12 @@ msgstr ""
#: part/admin.py:63 part/admin.py:302 part/stocktake.py:221
msgid "Category ID"
-msgstr ""
+msgstr "Categorie ID"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
-msgstr ""
+msgstr "Categorie naam"
#: part/admin.py:71 part/admin.py:316
msgid "Default Location ID"
@@ -6440,49 +6649,49 @@ msgstr ""
msgid "Default Supplier ID"
msgstr ""
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr ""
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
-msgstr ""
+msgstr "Minimum voorraad"
#: part/admin.py:138 part/templates/part/part_sidebar.html:27
msgid "Used In"
msgstr ""
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
-msgstr ""
+msgstr "Bouwen"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr ""
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr ""
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
-msgstr ""
+msgstr "Bovenliggende ID"
#: part/admin.py:312 part/admin.py:394 stock/admin.py:61
msgid "Parent Name"
-msgstr ""
+msgstr "Bovenliggende naam"
#: part/admin.py:320 part/templates/part/category.html:85
#: part/templates/part/category.html:98
msgid "Category Path"
msgstr ""
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr ""
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr ""
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr ""
@@ -6531,7 +6740,7 @@ msgstr ""
#: part/api.py:123 stock/api.py:310
msgid "Depth"
-msgstr ""
+msgstr "Diepte"
#: part/api.py:123
msgid "Filter by category depth"
@@ -6539,100 +6748,104 @@ msgstr ""
#: part/api.py:141 stock/api.py:328
msgid "Top Level"
-msgstr ""
+msgstr "Hoogste niveau"
#: part/api.py:143
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr "Stapelen"
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr "Binnenkomende Inkooporder"
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr "Uitgaande Verkooporder"
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr "Geproduceerde voorraad door Productieorder"
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr "Voorraad vereist voor Productieorder"
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr ""
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr ""
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
-msgstr ""
+msgstr "Categorie"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Standaard locatie"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Totale Voorraad"
@@ -6641,789 +6854,789 @@ msgstr "Totale Voorraad"
msgid "Input quantity for price calculation"
msgstr ""
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Onderdeel Categorie"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Onderdeel Categorieën"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Standaard locatie voor onderdelen in deze categorie"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
-msgstr ""
+msgstr "Structureel"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "Onderdelen mogen niet rechtstreeks aan een structurele categorie worden toegewezen, maar kunnen worden toegewezen aan subcategorieën."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr ""
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr ""
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
-msgstr ""
+msgstr "Pictogram"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
-msgstr ""
+msgstr "Pictogram (optioneel)"
-#: part/models.py:178
+#: part/models.py:180
msgid "You cannot make this part category structural because some parts are already assigned to it!"
msgstr ""
-#: part/models.py:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr ""
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr ""
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr ""
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr ""
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
-msgstr ""
+msgstr "Voorraadartikel met dit serienummer bestaat al"
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr ""
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr ""
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr ""
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Onderdeel naam"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr ""
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr ""
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr ""
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr ""
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr ""
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Onderdeel Categorie"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr ""
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr ""
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr ""
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr "Standaardleverancier"
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr ""
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
-msgstr ""
+msgstr "Verlooptijd (in dagen) voor voorraadartikelen van dit deel"
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
-msgstr ""
+msgstr "Minimaal toegelaten stock niveau"
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr "Eenheden voor dit onderdeel"
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr ""
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr ""
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr ""
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr ""
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr ""
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr ""
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
msgid "Is this a virtual part, such as a software product or license?"
msgstr ""
-#: part/models.py:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr ""
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr ""
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr ""
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr ""
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr ""
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr ""
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
-msgstr ""
+msgstr "Laatste voorraadcontrole"
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr ""
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr ""
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr ""
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr ""
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr ""
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr ""
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr ""
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr ""
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr ""
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr ""
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr ""
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr ""
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr ""
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr ""
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr ""
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr ""
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr ""
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr ""
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr ""
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr ""
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr ""
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr ""
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr ""
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr ""
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr ""
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr ""
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr ""
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr ""
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr ""
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr ""
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr ""
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr ""
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr ""
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr "Onderdeel voor voorraadcontrole"
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr ""
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
-msgstr ""
+msgstr "Aantal individuele voorraadvermeldingen op het moment van voorraadcontrole"
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
-msgstr ""
+msgstr "Totale voorraad op het moment van voorraadcontrole"
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Datum"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
-msgstr ""
+msgstr "Datum waarop voorraad werd uitgevoerd"
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr ""
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
-msgstr ""
+msgstr "Gebruiker die deze voorraad heeft uitgevoerd"
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
-msgstr ""
+msgstr "Minimale voorraadprijs"
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
-msgstr ""
+msgstr "Geschatte minimum kosten van de voorraad op de hand"
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
-msgstr ""
+msgstr "Maximale voorraadkosten"
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
-msgstr ""
+msgstr "Geschatte maximale kosten van de hand van voorraad"
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr ""
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
-msgstr ""
+msgstr "Bestand voorraadcontrole (intern gegenereerd)"
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr "Aantal onderdelen"
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
-msgstr ""
+msgstr "Aantal door voorraadopname gedekte onderdelen"
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
-msgstr ""
+msgstr "Gebruiker die om dit voorraadrapport heeft gevraagd"
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr ""
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
-msgstr ""
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
+msgstr "Test sjablonen kunnen alleen worden gemaakt voor testbare onderdelen"
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr ""
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr ""
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr ""
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr ""
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Ingeschakeld"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr ""
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr ""
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr ""
-#: part/models.py:3635
+#: part/models.py:3686
msgid "Does this test require a value when adding a test result?"
msgstr ""
-#: part/models.py:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr ""
-#: part/models.py:3642
+#: part/models.py:3693
msgid "Does this test require a file attachment when adding a test result?"
msgstr ""
-#: part/models.py:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr ""
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr ""
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr ""
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr "De template van de parameter moet uniek zijn"
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr "Parameternaam"
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr ""
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr ""
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr ""
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr ""
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr ""
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr ""
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr ""
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr ""
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr "Parameterwaarde"
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr ""
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr "Standaard Parameter Waarde"
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr ""
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr ""
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr ""
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr ""
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr ""
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr ""
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr ""
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr ""
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr ""
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr ""
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr ""
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr ""
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr ""
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr ""
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr ""
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr ""
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr ""
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr ""
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr ""
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr ""
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
-msgstr ""
+msgstr "Voorraaditems voor variant onderdelen kunnen worden gebruikt voor dit BOM artikel"
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
-msgstr ""
+msgstr "Hoeveelheid moet een geheel getal zijn voor trackable onderdelen"
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr ""
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr ""
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr ""
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr ""
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr ""
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr ""
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr ""
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr ""
-#: part/models.py:4637
+#: part/models.py:4699
msgid "Part relationship cannot be created between a part and itself"
msgstr ""
-#: part/models.py:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr ""
@@ -7449,367 +7662,379 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
-msgstr ""
+msgstr "Inkooporder voor dit voorraadartikel"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr "Speculatieve hoeveelheid"
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr "Model Id"
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr "Geen onderdelen geselecteerd"
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr ""
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr ""
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr ""
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Afbeelding kopiëren"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr "Afbeelding kopiëren van het oorspronkelijke onderdeel"
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr ""
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr ""
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Parameters kopiëren"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr "Parameter data kopiëren van het originele onderdeel"
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr ""
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr ""
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
-msgstr ""
+msgstr "Eerste voorraad hoeveelheid"
-#: part/serializers.py:514
+#: part/serializers.py:558
msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added."
-msgstr ""
+msgstr "Specificeer de initiële voorraad hoeveelheid voor dit onderdeel. Als het aantal nul is, wordt er geen voorraad toegevoegd."
-#: part/serializers.py:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
-msgstr ""
+msgstr "Eerste voorraad locatie"
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
-msgstr ""
+msgstr "Specificeer locatie van de eerste voorraad voor dit onderdeel"
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr ""
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr ""
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr ""
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr ""
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr ""
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr ""
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
-msgstr ""
+msgstr "Niet toegewezen voorraad"
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
-msgstr ""
+msgstr "Variant voorraad"
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr ""
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr ""
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
-msgstr ""
+msgstr "Eerste voorraad"
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
-msgstr ""
+msgstr "Maak onderdeel met eerste voorraad"
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr ""
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr ""
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr ""
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr ""
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr ""
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr ""
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr ""
-#: part/serializers.py:1194
+#: part/serializers.py:1247
msgid "Limit stocktake report to a particular part, and any variant parts"
-msgstr ""
+msgstr "Limiteer de voorraadrapportage tot een bepaald onderdeel en eventuele variant onderdelen"
-#: part/serializers.py:1204
+#: part/serializers.py:1257
msgid "Limit stocktake report to a particular part category, and any child categories"
-msgstr ""
+msgstr "Limiteer de voorraadrapportage tot een bepaalde deelcategorie en alle onderliggende categorieën"
-#: part/serializers.py:1214
+#: part/serializers.py:1267
msgid "Limit stocktake report to a particular stock location, and any child locations"
-msgstr ""
+msgstr "Limiteer de voorraadrapportage tot een bepaalde voorraadlocatie en alle onderliggende locaties"
-#: part/serializers.py:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
-msgstr ""
+msgstr "Externe voorraad uitsluiten"
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
-msgstr ""
+msgstr "Voorraadartikelen op externe locaties uitsluiten"
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr ""
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
-msgstr ""
+msgstr "Genereer een bestand met berekende voorraad namen gegevens"
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr ""
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
-msgstr ""
+msgstr "Bijwerken van de opgegeven onderdelen met berekende voorraad gegevens"
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
-msgstr ""
+msgstr "Voorraadcontrole functionaliteit is niet ingeschakeld"
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Achtergrondwerker check is gefaald"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr ""
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr ""
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr ""
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr ""
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr ""
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr ""
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr ""
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr ""
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr ""
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr ""
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr ""
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr ""
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr ""
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr ""
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
-msgstr ""
+msgstr "Inclusief stuklijst BOM items die worden overgenomen van getemplated onderdelen"
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr ""
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr ""
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr ""
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
-msgstr ""
+msgstr "Kopieer vervangende onderdelen bij dubbele stuklijst BOM items"
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
-msgstr ""
+msgstr "Verwijder bestaande stuklijst BOM"
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
-msgstr ""
+msgstr "Verwijder bestaande stuklijst BOM items voor het uploaden"
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr ""
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr ""
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr ""
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr ""
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr ""
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr "Ongeldige hoeveelheid"
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
-msgstr ""
+msgstr "Minstens één stuklijst BOM artikel is vereist"
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
-msgstr ""
+msgstr "Totale hoeveelheid"
#: part/stocktake.py:225
msgid "Total Cost Min"
-msgstr ""
+msgstr "Totale kosten Min"
#: part/stocktake.py:226
msgid "Total Cost Max"
-msgstr ""
+msgstr "Totale kosten Max"
#: part/stocktake.py:284
msgid "Stocktake Report Available"
-msgstr ""
+msgstr "Voorraadcontrole rapport beschikbaar"
#: part/stocktake.py:285
msgid "A new stocktake report is available for download"
-msgstr ""
+msgstr "Een nieuwe voorraadrapportage is beschikbaar voor download"
#: part/tasks.py:37
msgid "Low stock notification"
-msgstr ""
+msgstr "Lage voorraad melding"
#: part/tasks.py:39
#, python-brace-format
msgid "The available stock for {part.name} has fallen below the configured minimum level"
-msgstr ""
+msgstr "De beschikbare voorraad voor {part.name} is onder het ingestelde minimumniveau gedaald"
#: part/templates/part/bom.html:6
msgid "You do not have permission to edit the BOM."
@@ -7817,20 +8042,20 @@ msgstr "U heeft geen toestemming om de stuklijst te bewerken."
#: part/templates/part/bom.html:15
msgid "The BOM this part has been changed, and must be validated"
-msgstr ""
+msgstr "De stuklijst BOM dit onderdeel is gewijzigd en moet worden gevalideerd"
#: part/templates/part/bom.html:17
#, python-format
msgid "This BOM was last checked by %(checker)s on %(check_date)s"
-msgstr ""
+msgstr "Deze stuklijst BOM is laatst gecontroleerd door %(checker)s op %(check_date)s"
#: part/templates/part/bom.html:21
msgid "This BOM has not been validated."
-msgstr ""
+msgstr "Deze stuklijst BOM is niet gevalideerd."
#: part/templates/part/category.html:32
msgid "Perform stocktake for this part category"
-msgstr ""
+msgstr "Voorraadcontrole uitvoeren voor deze deelcategorie"
#: part/templates/part/category.html:38 part/templates/part/category.html:42
msgid "You are subscribed to notifications for this category"
@@ -7874,7 +8099,7 @@ msgstr ""
#: part/templates/part/category.html:163 templates/js/translated/bom.js:444
msgid "New Part"
-msgstr ""
+msgstr "Nieuw onderdeel"
#: part/templates/part/category.html:189
#: templates/InvenTree/settings/part_parameters.html:7
@@ -7916,7 +8141,7 @@ msgstr ""
#: part/templates/part/detail.html:20
msgid "Part Stock"
-msgstr ""
+msgstr "Voorraad onderdeel"
#: part/templates/part/detail.html:44
msgid "Refresh scheduling data"
@@ -7929,14 +8154,14 @@ msgstr ""
#: part/templates/part/detail.html:66
msgid "Add stocktake information"
-msgstr ""
+msgstr "Voorraadinformatie toevoegen"
#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50
-#: stock/admin.py:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
-msgstr ""
+msgstr "Voorraadcontrole"
#: part/templates/part/detail.html:83
msgid "Part Test Templates"
@@ -7993,28 +8218,28 @@ msgstr ""
#: part/templates/part/detail.html:280 templates/js/translated/bom.js:340
msgid "Export BOM"
-msgstr ""
+msgstr "Exporteren van stuklijst BOM"
#: part/templates/part/detail.html:282
msgid "Print BOM Report"
-msgstr ""
+msgstr "Print stuklijst BOM Rapport"
#: part/templates/part/detail.html:288
msgid "BOM actions"
-msgstr ""
+msgstr "Stuklijst BOM acties"
#: part/templates/part/detail.html:292
msgid "Upload BOM"
-msgstr ""
+msgstr "Stuklijst BOM uploaden"
#: part/templates/part/detail.html:294
msgid "Validate BOM"
-msgstr ""
+msgstr "Valideren stuklijst BOM"
#: part/templates/part/detail.html:299 part/templates/part/detail.html:300
#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321
msgid "Add BOM Item"
-msgstr ""
+msgstr "Stuklijst BOM item toevoegen"
#: part/templates/part/detail.html:313
msgid "Assemblies"
@@ -8093,142 +8318,146 @@ msgstr "Selecteer bestandsindeling"
msgid "Part List"
msgstr ""
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr ""
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Label afdrukken"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr ""
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr "Voorraad acties"
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
-msgstr ""
+msgstr "Tel voorraad"
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
-msgstr ""
+msgstr "Voorraad van onderdeel verplaatsen"
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr ""
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr ""
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr ""
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr ""
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr ""
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr "Onderdeel kan vanuit andere onderdelen worden samengesteld"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr "Onderdeel kan gebruikt worden voor assemblages"
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
-msgstr ""
+msgstr "Onderdeel voorraad wordt bijgehouden op basis van serienummer"
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr ""
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr ""
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr ""
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr ""
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr ""
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr "Toegewezen aan Productieorder"
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr "Toegewezen aan verkooporders"
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
-msgstr ""
+msgstr "Minimale voorraad niveau"
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
-msgstr ""
+msgstr "Prijs bereik"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr ""
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
-msgstr ""
+msgstr "Zoek op serienummer"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8251,7 +8480,7 @@ msgstr ""
#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90
#: part/templates/part/prices.html:250
msgid "BOM Pricing"
-msgstr ""
+msgstr "Stukslijst prijs"
#: part/templates/part/part_pricing.html:66
msgid "Unit Purchase Price"
@@ -8263,7 +8492,7 @@ msgstr ""
#: part/templates/part/part_pricing.html:83
msgid "No BOM pricing available"
-msgstr ""
+msgstr "Geen stuklijst BOM prijs beschikbaar"
#: part/templates/part/part_pricing.html:92
msgid "Internal Price"
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr ""
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Voorraad"
@@ -8324,19 +8553,19 @@ msgstr ""
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr ""
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
-msgstr ""
+msgstr "Laatst bijgewerkt"
#: part/templates/part/prices.html:37 part/templates/part/prices.html:127
msgid "Price Category"
@@ -8406,52 +8635,52 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
-msgstr ""
+msgstr "Geen voorraad"
#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120
msgid "Low Stock"
-msgstr ""
+msgstr "Lage voorraad"
#: part/templates/part/upload_bom.html:8
msgid "Return to BOM"
-msgstr ""
+msgstr "Terug naar stuklijst BOM"
#: part/templates/part/upload_bom.html:13
msgid "Upload Bill of Materials"
-msgstr ""
+msgstr "Upload stuklijst"
#: part/templates/part/upload_bom.html:19
msgid "BOM upload requirements"
-msgstr ""
+msgstr "stuklijst BOM upload vereisten"
#: part/templates/part/upload_bom.html:23
#: part/templates/part/upload_bom.html:90
msgid "Upload BOM File"
-msgstr ""
+msgstr "Stuklijst BOM bestand uploaden"
#: part/templates/part/upload_bom.html:29
msgid "Submit BOM Data"
-msgstr ""
+msgstr "Stuklijst BOM gegevens verzenden"
#: part/templates/part/upload_bom.html:37
msgid "Requirements for BOM upload"
-msgstr ""
+msgstr "Vereisten voor stuklijst BOM upload"
#: part/templates/part/upload_bom.html:39
msgid "The BOM file must contain the required named columns as provided in the "
-msgstr ""
+msgstr "Het stuklijst BOM bestand moet de vereiste kolommen met naam en toenaam bevatten in de "
#: part/templates/part/upload_bom.html:39
msgid "BOM Upload Template"
-msgstr ""
+msgstr "Stuklijst BOM Upload Sjabloon"
#: part/templates/part/upload_bom.html:40
msgid "Each part must already exist in the database"
-msgstr ""
+msgstr "Elk onderdeel moet al bestaan in de database"
#: part/templates/part/variant_part.html:9
msgid "Create new part variant"
@@ -8486,7 +8715,7 @@ msgstr "Afbeelding van onderdeel niet gevonden"
msgid "Part Pricing"
msgstr ""
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "Geen actie gespecificeerd"
msgid "No matching action found"
msgstr "Geen overeenkomende actie gevonden"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Geen overeenkomst gevonden voor streepjescodegegevens"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Overeenkomst gevonden voor streepjescodegegevens"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr ""
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr ""
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr ""
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr "Geen overeenkomende plug-in gevonden voor barcode gegevens"
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr ""
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr ""
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr ""
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr ""
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr ""
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr "Geen verkooporder opgegeven"
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
-msgstr ""
+msgstr "Streepjescode komt niet overeen met een bestaand voorraadartikel"
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
-msgstr ""
+msgstr "Voorraad item komt niet overeen met regelitem"
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr "Onvoldoende voorraad beschikbaar"
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
-msgstr ""
+msgstr "Voorraad item toegewezen aan verkooporder"
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr ""
@@ -8591,75 +8827,75 @@ msgstr ""
msgid "Purchase order does not match supplier"
msgstr ""
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr ""
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr ""
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr ""
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr ""
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr ""
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr ""
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr ""
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr ""
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr ""
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr ""
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr ""
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr "Kenmerk type"
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr "Feature opties"
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr "Feature bron (javascript)"
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr ""
@@ -8756,7 +9028,7 @@ msgstr ""
msgid "URL that is used to send messages to a slack channel"
msgstr ""
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr ""
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr ""
msgid "Print a border around each label"
msgstr ""
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr ""
@@ -8894,19 +9166,19 @@ msgstr ""
msgid "The Supplier which acts as 'TME'"
msgstr ""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr ""
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr ""
@@ -8943,10 +9215,6 @@ msgstr ""
msgid "Plugin Configurations"
msgstr ""
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr ""
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr ""
@@ -8955,7 +9223,7 @@ msgstr ""
msgid "PluginName of the plugin"
msgstr ""
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr ""
@@ -8984,17 +9252,17 @@ msgstr ""
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr ""
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr ""
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr ""
@@ -9053,81 +9321,157 @@ msgstr ""
msgid "InvenTree Contributors"
msgstr ""
-#: plugin/serializers.py:81
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr "Onderdeel panelen inschakelen"
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr "Schakel aangepaste panelen in voor deelweergave"
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr "Schakel order panelen in"
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr "Schakel aangepaste panelen in voor inkooporders"
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr "Kapotte panelen inschakelen"
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr "Schakel defecte panelen in voor testen"
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr "Dynamisch paneel inschakelen"
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr "Activeer dynamische panelen om te testen"
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr "Bron bestand"
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr "Pad naar het bronbestand voor administrator integratie"
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr "Optionele context data voor de administrator integratie"
+
+#: plugin/serializers.py:106
msgid "Source URL"
msgstr ""
-#: plugin/serializers.py:83
+#: plugin/serializers.py:108
msgid "Source for the package - this can be a custom registry or a VCS path"
msgstr ""
-#: plugin/serializers.py:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr ""
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr ""
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr ""
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
msgid "This will install this plugin now into the current instance. The instance will go into maintenance."
msgstr ""
-#: plugin/serializers.py:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr ""
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr ""
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr ""
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr ""
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr ""
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr ""
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr ""
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr ""
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr ""
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr ""
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr ""
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr "Rapport opgeslagen op het moment van afdrukken"
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr ""
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr "Bevestig aan het model bij afdrukken"
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr "Sla rapport output op als bijlage ten opzichte van gekoppelde model instantie bij afdrukken"
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Bestandsnaam Patroon"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr ""
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr ""
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr ""
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Breedte [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Label breedte, gespecificeerd in mm"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Hoogte [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Label hoogte, gespecificeerd in mm"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr ""
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr ""
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr ""
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr ""
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr ""
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr ""
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9341,13 +9697,13 @@ msgstr ""
#: report/templates/label/stocklocation_qr.html:20
#: templates/allauth_2fa/setup.html:18
msgid "QR Code"
-msgstr ""
+msgstr "QR Code"
#: report/templates/label/part_label_code128.html:31
#: report/templates/label/stocklocation_qr_and_text.html:31
#: templates/qr_code.html:7
msgid "QR code"
-msgstr ""
+msgstr "QR code"
#: report/templates/report/inventree_bill_of_materials_report.html:133
msgid "Materials needed"
@@ -9365,9 +9721,9 @@ msgstr ""
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr "Stukprijs"
@@ -9379,20 +9735,25 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr "Totaal"
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr "Toewijzingen"
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
-msgstr ""
+msgstr "Voorraad locatie items"
#: report/templates/report/inventree_test_report.html:21
msgid "Stock Item Test Report"
-msgstr ""
+msgstr "Rapport voorraadcontrole"
#: report/templates/report/inventree_test_report.html:97
msgid "Test Results"
@@ -9401,17 +9762,15 @@ msgstr ""
#: report/templates/report/inventree_test_report.html:102
#: templates/js/translated/stock.js:1580
msgid "Test"
-msgstr ""
-
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr ""
+msgstr "Test"
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr ""
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr ""
@@ -9420,19 +9779,20 @@ msgid "No result (required)"
msgstr ""
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr ""
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
-msgstr ""
+msgstr "Geïnstalleerde items"
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
-msgstr ""
+msgstr "Serienummer"
#: report/templatetags/report.py:98
msgid "Asset file does not exist"
@@ -9450,704 +9810,708 @@ msgstr ""
msgid "company_image tag requires a Company instance"
msgstr ""
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
-msgstr ""
+msgstr "Locatie ID"
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
-msgstr ""
+msgstr "Locatie pad"
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
-msgstr ""
+msgstr "Voorraad item ID"
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
-msgstr ""
+msgstr "Status code"
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
-msgstr ""
+msgstr "Leverancier deel ID"
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
-msgstr ""
+msgstr "Leverancier artikelnummer"
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
-msgstr ""
+msgstr "Leverancier ID"
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
-msgstr ""
+msgstr "Klant ID"
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
-msgstr ""
+msgstr "Geïnstalleerd in"
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
-msgstr ""
+msgstr "Build ID"
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
-msgstr ""
+msgstr "Verkooporder ID"
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
-msgstr ""
+msgstr "Inkooporder ID"
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
-msgstr ""
+msgstr "Beoordeling nodig"
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
-msgstr ""
+msgstr "Verwijderen na uitzetten"
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
-msgstr ""
+msgstr "Vervaldatum"
#: stock/api.py:310
msgid "Filter by location depth"
-msgstr ""
+msgstr "Filter op locatie diepte"
#: stock/api.py:330
msgid "Filter by top-level locations"
-msgstr ""
+msgstr "Filter op topniveau locaties"
#: stock/api.py:345
msgid "Include sub-locations in filtered results"
-msgstr ""
+msgstr "Inclusief sublocaties in gefilterde resultaten"
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
-msgstr ""
+msgstr "Bovenliggende locatie"
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
-msgstr ""
+msgstr "Filter op bovenliggende locatie"
#: stock/api.py:615 templates/js/translated/table_filters.js:434
msgid "External Location"
-msgstr ""
+msgstr "Externe locatie"
#: stock/api.py:803
msgid "Part Tree"
-msgstr ""
+msgstr "Boomstructuur onderdeel"
#: stock/api.py:833
msgid "Expiry date before"
-msgstr ""
+msgstr "Vervaldatum voor"
#: stock/api.py:837
msgid "Expiry date after"
-msgstr ""
+msgstr "Vervaldatum na"
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
-msgstr ""
+msgstr "Verouderd"
#: stock/api.py:927
msgid "Quantity is required"
-msgstr ""
+msgstr "Hoeveelheid is vereist"
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
-msgstr ""
+msgstr "Geldig onderdeel moet worden opgegeven"
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
-msgstr ""
+msgstr "Het opgegeven leveranciers onderdeel bestaat niet"
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
-msgstr ""
+msgstr "Het leveranciersdeel heeft een pakketgrootte gedefinieerd, maar vlag use_pack_size niet ingesteld"
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
-msgstr ""
+msgstr "Serienummers kunnen niet worden meegeleverd voor een niet traceerbaar onderdeel"
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
-msgstr ""
+msgstr "Voorraad locatie soort"
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
-msgstr ""
+msgstr "Voorraad locatie soorten"
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
-msgstr ""
+msgstr "Standaardpictogram voor alle locaties waarvoor geen pictogram is ingesteld (optioneel)"
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Voorraadlocatie"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Voorraadlocaties"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
-msgstr ""
+msgstr "Eigenaar"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
-msgstr ""
+msgstr "Selecteer eigenaar"
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
-msgstr ""
+msgstr "Voorraaditems kunnen niet direct worden geplaatst op een structurele voorraadlocatie, maar kunnen zich op onderliggende locaties bevinden."
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
-msgstr ""
+msgstr "Extern"
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
-msgstr ""
+msgstr "Dit is een externe voorraadlocatie"
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
-msgstr ""
+msgstr "Locatie type"
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
-msgstr ""
+msgstr "Voorraad locatie type van deze locatie"
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
-msgstr ""
+msgstr "U kunt deze voorraadlocatie niet structureel maken omdat sommige voorraadartikelen er al in liggen!"
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr "Onderdeel moet gespecificeerd worden"
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
-msgstr ""
+msgstr "Voorraaditems kunnen niet worden geplaatst in structurele voorraadlocaties!"
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
-msgstr ""
+msgstr "Voorraadartikel kan niet worden aangemaakt voor virtuele onderdelen"
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
-msgstr ""
+msgstr "Onderdeel type ('{self.supplier_part.part}') moet {self.part} zijn"
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
-msgstr ""
+msgstr "Hoeveelheid moet 1 zijn voor item met een serienummer"
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
-msgstr ""
+msgstr "Serienummer kan niet worden ingesteld als de hoeveelheid groter is dan 1"
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
-msgstr ""
+msgstr "Item kan niet tot zichzelf behoren"
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
-msgstr ""
+msgstr "Item moet een bouw referentie hebben als is_building=True"
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
-msgstr ""
+msgstr "Bouw referentie verwijst niet naar hetzelfde deel object"
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
-msgstr ""
+msgstr "Bovenliggend voorraad item"
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
-msgstr ""
+msgstr "Basis onderdeel"
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
-msgstr ""
+msgstr "Selecteer een leveranciersdeel voor dit voorraadartikel"
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
-msgstr ""
+msgstr "Waar bevindt zich dit voorraaditem?"
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
-msgstr ""
+msgstr "Het verpakken van dit voorraaditem is opgeslagen in"
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
-msgstr ""
+msgstr "Is dit item geïnstalleerd in een ander item?"
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
-msgstr ""
+msgstr "Serienummer van dit item"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
-msgstr ""
+msgstr "Batch code voor dit voorraaditem"
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
-msgstr ""
+msgstr "Voorraad hoeveelheid"
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
-msgstr ""
+msgstr "Bron Bouw"
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
-msgstr ""
+msgstr "Build voor dit voorraaditem"
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
-msgstr ""
+msgstr "Verbruikt door"
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
-msgstr ""
+msgstr "Bestelling bouwen welke dit voorraadartikel heeft verbruikt"
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr "Inkooporder Bron"
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr "Inkooporder voor dit voorraadartikel"
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr "Bestemming Verkooporder"
-#: stock/models.py:921
+#: stock/models.py:998
msgid "Expiry date for stock item. Stock will be considered expired after this date"
-msgstr ""
+msgstr "Vervaldatum voor voorraadartikel. Voorraad zal worden beschouwd als verlopen na deze datum"
-#: stock/models.py:939
+#: stock/models.py:1016
msgid "Delete on deplete"
-msgstr ""
+msgstr "Verwijderen bij leegmaken"
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
-msgstr ""
+msgstr "Verwijder dit voorraadproduct wanneer de voorraad is leeg"
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
-msgstr ""
+msgstr "Enkele eenheidsprijs van de aankoop op het moment van aankoop"
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
-msgstr ""
+msgstr "Omgezet tot onderdeel"
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
-msgstr ""
+msgstr "Onderdeel is niet ingesteld als traceerbaar"
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
-msgstr ""
+msgstr "Hoeveelheid moet heel getal zijn"
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
-msgstr ""
+msgstr "Hoeveelheid mag niet hoger zijn dan de beschikbare voorraad ({self.quantity})"
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
-msgstr ""
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr "Serienummers moeten als lijst worden opgegeven"
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
-msgstr ""
+msgstr "Hoeveelheid komt niet overeen met serienummers"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr ""
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
-msgstr ""
+msgstr "Testsjabloon bestaat niet"
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr "Voorraadartikel is toegewezen aan een verkooporder"
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
-msgstr ""
+msgstr "Voorraad item is geïnstalleerd in een ander item"
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
-msgstr ""
+msgstr "Voorraadartikel bevat andere producten"
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
-msgstr ""
+msgstr "Voorraadartikel is aan een klant toegewezen"
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
-msgstr ""
+msgstr "Voorraad item is momenteel in productie"
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
-msgstr ""
+msgstr "Geserialiseerde voorraad kan niet worden samengevoegd"
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
-msgstr ""
+msgstr "Dupliceer voorraadartikelen"
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
-msgstr ""
+msgstr "Voorraadartikelen moeten hetzelfde onderdeel verwijzen"
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
-msgstr ""
+msgstr "Voorraadartikelen moeten verwijzen naar dezelfde leveranciersdeel"
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
-msgstr ""
+msgstr "De voorraad statuscodes moeten overeenkomen"
-#: stock/models.py:1960
+#: stock/models.py:2066
msgid "StockItem cannot be moved as it is not in stock"
-msgstr ""
+msgstr "Voorraadartikel kan niet worden verplaatst omdat het niet op voorraad is"
-#: stock/models.py:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
-msgstr ""
+msgstr "Voorraad item volgen"
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
-msgstr ""
+msgstr "Item notities"
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
-msgstr ""
+msgstr "Waarde moet voor deze test worden opgegeven"
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
-msgstr ""
+msgstr "Bijlage moet worden geüpload voor deze test"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
-msgstr ""
+msgstr "Ongeldige waarde voor deze test"
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
-msgstr ""
+msgstr "Test resultaat"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
-msgstr ""
+msgstr "Test uitvoer waarde"
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
-msgstr ""
+msgstr "Test resultaat bijlage"
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
-msgstr ""
+msgstr "Test notities"
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
-msgstr ""
+msgstr "Test station"
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
-msgstr ""
+msgstr "De identificatie van het teststation waar de test werd uitgevoerd"
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
-msgstr ""
+msgstr "Gestart"
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
-msgstr ""
+msgstr "Het tijdstip van de start test"
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
-msgstr ""
+msgstr "Afgerond"
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
-msgstr ""
+msgstr "Het tijdstip van de afgeronde test"
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
-msgstr ""
+msgstr "Gegenereerde batch code"
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
-msgstr ""
+msgstr "Selecteer build order"
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
-msgstr ""
+msgstr "Selecteer het voorraaditem om een batchcode te genereren voor"
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
-msgstr ""
+msgstr "Selecteer locatie om batch code voor te genereren"
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
-msgstr ""
+msgstr "Selecteer onderdeel voor het genereren van batchcode voor"
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
-msgstr ""
+msgstr "Selecteer bestelling"
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
-msgstr ""
+msgstr "Voer aantal voor batch code in"
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
-msgstr ""
+msgstr "Gegenereerd serienummer"
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
-msgstr ""
+msgstr "Selecteer onderdeel voor het genereren van het serienummer voor"
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
-msgstr ""
+msgstr "Aantal serienummers om te genereren"
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
-msgstr ""
+msgstr "Test template voor dit resultaat"
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
-msgstr ""
+msgstr "SjabloonID of testnaam moet worden opgegeven"
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
-msgstr ""
+msgstr "De testtijd kan niet eerder zijn dan de starttijd van de test"
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
-msgstr ""
+msgstr "Serienummer is te groot"
-#: stock/serializers.py:452 stock/templates/stock/item_base.html:193
+#: stock/serializers.py:462 stock/templates/stock/item_base.html:190
msgid "Parent Item"
-msgstr ""
+msgstr "Bovenliggend Item"
-#: stock/serializers.py:453
+#: stock/serializers.py:463
msgid "Parent stock item"
-msgstr ""
+msgstr "Bovenliggende voorraad item"
-#: stock/serializers.py:472
+#: stock/serializers.py:484
msgid "Use pack size when adding: the quantity defined is the number of packs"
-msgstr ""
+msgstr "Gebruik pakketgrootte bij het toevoegen: de hoeveelheid gedefinieerd is het aantal pakketten"
-#: stock/serializers.py:596 stock/templates/stock/item_base.html:437
+#: stock/serializers.py:623 stock/templates/stock/item_base.html:434
#: templates/js/translated/table_filters.js:442 users/models.py:174
msgid "Expired"
-msgstr ""
+msgstr "Verlopen"
-#: stock/serializers.py:602 stock/templates/stock/stock_sidebar.html:20
+#: stock/serializers.py:629 stock/templates/stock/stock_sidebar.html:20
msgid "Child Items"
-msgstr ""
+msgstr "Onderliggende items"
-#: stock/serializers.py:606
+#: stock/serializers.py:633
msgid "Tracking Items"
-msgstr ""
+msgstr "Items volgen"
-#: stock/serializers.py:612
+#: stock/serializers.py:639
msgid "Purchase price of this stock item, per unit or pack"
-msgstr ""
+msgstr "Inkoopprijs van dit voorraadartikel, per eenheid of pakket"
-#: stock/serializers.py:631
+#: stock/serializers.py:658
msgid "Minimum Pricing"
-msgstr ""
+msgstr "Minimale prijs"
-#: stock/serializers.py:637
+#: stock/serializers.py:664
msgid "Maximum Pricing"
-msgstr ""
+msgstr "Maximum prijs"
-#: stock/serializers.py:661
+#: stock/serializers.py:688
msgid "Enter number of stock items to serialize"
-msgstr ""
+msgstr "Aantal voorraaditems om serienummers voor te maken"
-#: stock/serializers.py:674
+#: stock/serializers.py:701
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({q})"
-msgstr ""
+msgstr "Hoeveelheid mag niet hoger zijn dan de beschikbare voorraad ({q})"
-#: stock/serializers.py:681
+#: stock/serializers.py:708
msgid "Enter serial numbers for new items"
-msgstr ""
+msgstr "Voer serienummers voor nieuwe items in"
-#: stock/serializers.py:692 stock/serializers.py:1426 stock/serializers.py:1682
+#: stock/serializers.py:719 stock/serializers.py:1457 stock/serializers.py:1713
msgid "Destination stock location"
-msgstr ""
+msgstr "Locatie van bestemming"
-#: stock/serializers.py:699
+#: stock/serializers.py:726
msgid "Optional note field"
-msgstr ""
+msgstr "Optioneel notities veld"
-#: stock/serializers.py:709
+#: stock/serializers.py:736
msgid "Serial numbers cannot be assigned to this part"
-msgstr ""
+msgstr "Serienummers kunnen niet worden toegewezen aan dit deel"
-#: stock/serializers.py:764
+#: stock/serializers.py:756
+msgid "Serial numbers already exist"
+msgstr "Serienummers bestaan al"
+
+#: stock/serializers.py:795
msgid "Select stock item to install"
-msgstr ""
+msgstr "Selecteer voorraaditem om te installeren"
-#: stock/serializers.py:771
+#: stock/serializers.py:802
msgid "Quantity to Install"
-msgstr ""
+msgstr "Te installeren hoeveelheid"
-#: stock/serializers.py:772
+#: stock/serializers.py:803
msgid "Enter the quantity of items to install"
-msgstr ""
+msgstr "Voer de te installeren hoeveelheid items in"
-#: stock/serializers.py:777 stock/serializers.py:857 stock/serializers.py:983
-#: stock/serializers.py:1033
+#: stock/serializers.py:808 stock/serializers.py:888 stock/serializers.py:1014
+#: stock/serializers.py:1064
msgid "Add transaction note (optional)"
-msgstr ""
+msgstr "Transactienotitie toevoegen (optioneel)"
-#: stock/serializers.py:785
+#: stock/serializers.py:816
msgid "Quantity to install must be at least 1"
-msgstr ""
+msgstr "Te installeren hoeveelheid moet minimaal 1 zijn"
-#: stock/serializers.py:793
+#: stock/serializers.py:824
msgid "Stock item is unavailable"
-msgstr ""
+msgstr "Voorraadartikel is niet beschikbaar"
-#: stock/serializers.py:804
+#: stock/serializers.py:835
msgid "Selected part is not in the Bill of Materials"
-msgstr ""
+msgstr "Het geselecteerde deel zit niet in de materialen lijst"
-#: stock/serializers.py:817
+#: stock/serializers.py:848
msgid "Quantity to install must not exceed available quantity"
-msgstr ""
+msgstr "De te installeren hoeveelheid mag niet groter zijn dan de beschikbare hoeveelheid"
-#: stock/serializers.py:852
+#: stock/serializers.py:883
msgid "Destination location for uninstalled item"
-msgstr ""
+msgstr "Bestemmingslocatie voor verwijderd item"
-#: stock/serializers.py:903
+#: stock/serializers.py:934
msgid "Unsupported statistic type: "
msgstr ""
-#: stock/serializers.py:917
+#: stock/serializers.py:948
msgid "Select part to convert stock item into"
msgstr ""
-#: stock/serializers.py:930
+#: stock/serializers.py:961
msgid "Selected part is not a valid option for conversion"
msgstr ""
-#: stock/serializers.py:947
+#: stock/serializers.py:978
msgid "Cannot convert stock item with assigned SupplierPart"
msgstr ""
-#: stock/serializers.py:978
+#: stock/serializers.py:1009
msgid "Destination location for returned item"
msgstr ""
-#: stock/serializers.py:1015
+#: stock/serializers.py:1046
msgid "Select stock items to change status"
msgstr ""
-#: stock/serializers.py:1021
+#: stock/serializers.py:1052
msgid "No stock items selected"
msgstr ""
-#: stock/serializers.py:1117 stock/serializers.py:1194
-#: stock/templates/stock/location.html:162
-#: stock/templates/stock/location.html:219
+#: stock/serializers.py:1148 stock/serializers.py:1225
+#: stock/templates/stock/location.html:163
+#: stock/templates/stock/location.html:220
#: stock/templates/stock/location_sidebar.html:5
msgid "Sublocations"
msgstr "Sublocaties"
-#: stock/serializers.py:1187 templates/js/translated/stock.js:160
+#: stock/serializers.py:1218 templates/js/translated/stock.js:160
msgid "Parent stock location"
msgstr ""
-#: stock/serializers.py:1298
+#: stock/serializers.py:1329
msgid "Part must be salable"
msgstr ""
-#: stock/serializers.py:1302
+#: stock/serializers.py:1333
msgid "Item is allocated to a sales order"
msgstr "Artikel is toegewezen aan een verkooporder"
-#: stock/serializers.py:1306
+#: stock/serializers.py:1337
msgid "Item is allocated to a build order"
msgstr "Artikel is toegewezen aan een productieorder"
-#: stock/serializers.py:1330
+#: stock/serializers.py:1361
msgid "Customer to assign stock items"
msgstr ""
-#: stock/serializers.py:1336
+#: stock/serializers.py:1367
msgid "Selected company is not a customer"
msgstr ""
-#: stock/serializers.py:1344
+#: stock/serializers.py:1375
msgid "Stock assignment notes"
msgstr ""
-#: stock/serializers.py:1354 stock/serializers.py:1608
+#: stock/serializers.py:1385 stock/serializers.py:1639
msgid "A list of stock items must be provided"
msgstr ""
-#: stock/serializers.py:1433
+#: stock/serializers.py:1464
msgid "Stock merging notes"
msgstr ""
-#: stock/serializers.py:1438
+#: stock/serializers.py:1469
msgid "Allow mismatched suppliers"
msgstr ""
-#: stock/serializers.py:1439
+#: stock/serializers.py:1470
msgid "Allow stock items with different supplier parts to be merged"
msgstr ""
-#: stock/serializers.py:1444
+#: stock/serializers.py:1475
msgid "Allow mismatched status"
msgstr ""
-#: stock/serializers.py:1445
+#: stock/serializers.py:1476
msgid "Allow stock items with different status codes to be merged"
msgstr ""
-#: stock/serializers.py:1455
+#: stock/serializers.py:1486
msgid "At least two stock items must be provided"
msgstr ""
-#: stock/serializers.py:1522
+#: stock/serializers.py:1553
msgid "No Change"
msgstr ""
-#: stock/serializers.py:1551
+#: stock/serializers.py:1582
msgid "StockItem primary key value"
msgstr ""
-#: stock/serializers.py:1570
+#: stock/serializers.py:1601
msgid "Stock item status code"
msgstr ""
-#: stock/serializers.py:1598
+#: stock/serializers.py:1629
msgid "Stock transaction notes"
msgstr ""
@@ -10175,107 +10539,107 @@ msgstr "Afgewezen"
msgid "Quarantined"
msgstr "In quarantaine geplaatst"
-#: stock/status_codes.py:40
+#: stock/status_codes.py:44
msgid "Legacy stock tracking entry"
msgstr "Verouderde volgcode"
-#: stock/status_codes.py:42 templates/js/translated/stock.js:550
+#: stock/status_codes.py:46 templates/js/translated/stock.js:550
msgid "Stock item created"
msgstr "Voorraaditem gemaakt"
-#: stock/status_codes.py:45
+#: stock/status_codes.py:49
msgid "Edited stock item"
msgstr "Bewerken voorraadartikel"
-#: stock/status_codes.py:46
+#: stock/status_codes.py:50
msgid "Assigned serial number"
msgstr "Serienummer toegewezen"
-#: stock/status_codes.py:49
+#: stock/status_codes.py:53
msgid "Stock counted"
msgstr "Voorraad geteld"
-#: stock/status_codes.py:50
+#: stock/status_codes.py:54
msgid "Stock manually added"
msgstr "Voorraad handmatig toegevoegd"
-#: stock/status_codes.py:51
+#: stock/status_codes.py:55
msgid "Stock manually removed"
msgstr "Voorraad handmatig verwijderd"
-#: stock/status_codes.py:54
+#: stock/status_codes.py:58
msgid "Location changed"
msgstr "Locatie veranderd"
-#: stock/status_codes.py:55
+#: stock/status_codes.py:59
msgid "Stock updated"
msgstr "Voorraad bijgewerkt"
-#: stock/status_codes.py:58
+#: stock/status_codes.py:62
msgid "Installed into assembly"
msgstr "Gemonteerd"
-#: stock/status_codes.py:59
+#: stock/status_codes.py:63
msgid "Removed from assembly"
msgstr "Gedemonteerd"
-#: stock/status_codes.py:61
+#: stock/status_codes.py:65
msgid "Installed component item"
msgstr "Geïnstalleerd componentartikel"
-#: stock/status_codes.py:62
+#: stock/status_codes.py:66
msgid "Removed component item"
msgstr "Verwijderd componentartikel"
-#: stock/status_codes.py:65
+#: stock/status_codes.py:69
msgid "Split from parent item"
msgstr "Splits van bovenliggend item"
-#: stock/status_codes.py:66
+#: stock/status_codes.py:70
msgid "Split child item"
msgstr "Splits onderliggende item"
-#: stock/status_codes.py:69 templates/js/translated/stock.js:1943
+#: stock/status_codes.py:73 templates/js/translated/stock.js:1944
msgid "Merged stock items"
msgstr "Samengevoegde voorraadartikelen"
-#: stock/status_codes.py:72
+#: stock/status_codes.py:76
msgid "Converted to variant"
msgstr "Geconverteerd naar variant"
-#: stock/status_codes.py:75
+#: stock/status_codes.py:79
msgid "Build order output created"
msgstr "Product aangemaakt"
-#: stock/status_codes.py:76
+#: stock/status_codes.py:80
msgid "Build order output completed"
msgstr "Product voltooid"
-#: stock/status_codes.py:77
+#: stock/status_codes.py:81
msgid "Build order output rejected"
msgstr "Build order uitvoer afgewezen"
-#: stock/status_codes.py:78 templates/js/translated/stock.js:1849
+#: stock/status_codes.py:82 templates/js/translated/stock.js:1849
msgid "Consumed by build order"
msgstr "Verbruikt door productieorder"
-#: stock/status_codes.py:81
+#: stock/status_codes.py:85
msgid "Shipped against Sales Order"
msgstr "Verzonden onder verkooporder"
-#: stock/status_codes.py:84
+#: stock/status_codes.py:88
msgid "Received against Purchase Order"
msgstr "Ontvangen onder verkooporder"
-#: stock/status_codes.py:87
+#: stock/status_codes.py:91
msgid "Returned against Return Order"
msgstr "Geretourneerd onder retourorder"
-#: stock/status_codes.py:90 templates/js/translated/table_filters.js:382
+#: stock/status_codes.py:94 templates/js/translated/table_filters.js:382
msgid "Sent to customer"
msgstr "Naar klant verzonden"
-#: stock/status_codes.py:91
+#: stock/status_codes.py:95
msgid "Returned from customer"
msgstr "Geretourneerd door klant"
@@ -10296,7 +10660,7 @@ msgstr ""
msgid "Test Data"
msgstr ""
-#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65
+#: stock/templates/stock/item.html:85
msgid "Test Report"
msgstr ""
@@ -10316,7 +10680,7 @@ msgstr ""
msgid "Installed Stock Items"
msgstr ""
-#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3354
+#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3355
msgid "Install Stock Item"
msgstr ""
@@ -10328,311 +10692,311 @@ msgstr ""
msgid "Add Test Result"
msgstr ""
-#: stock/templates/stock/item_base.html:33
+#: stock/templates/stock/item_base.html:34
msgid "Locate stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:51
+#: stock/templates/stock/item_base.html:52
msgid "Scan to Location"
msgstr "Scan naar Locatie"
#: stock/templates/stock/item_base.html:59
-#: stock/templates/stock/location.html:67
+#: stock/templates/stock/location.html:68
#: templates/js/translated/filters.js:434
msgid "Printing actions"
msgstr ""
-#: stock/templates/stock/item_base.html:75
+#: stock/templates/stock/item_base.html:64 templates/js/translated/report.js:49
+msgid "Print Report"
+msgstr ""
+
+#: stock/templates/stock/item_base.html:72
msgid "Stock adjustment actions"
msgstr ""
-#: stock/templates/stock/item_base.html:79
-#: stock/templates/stock/location.html:87 templates/js/translated/stock.js:1909
+#: stock/templates/stock/item_base.html:76
+#: stock/templates/stock/location.html:88 templates/js/translated/stock.js:1909
msgid "Count stock"
msgstr "Voorraad tellen"
-#: stock/templates/stock/item_base.html:81
+#: stock/templates/stock/item_base.html:78
#: templates/js/translated/stock.js:1891
msgid "Add stock"
msgstr ""
-#: stock/templates/stock/item_base.html:82
+#: stock/templates/stock/item_base.html:79
#: templates/js/translated/stock.js:1900
msgid "Remove stock"
msgstr ""
-#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/item_base.html:82
msgid "Serialize stock"
msgstr ""
-#: stock/templates/stock/item_base.html:88
-#: stock/templates/stock/location.html:93 templates/js/translated/stock.js:1918
+#: stock/templates/stock/item_base.html:85
+#: stock/templates/stock/location.html:94 templates/js/translated/stock.js:1918
msgid "Transfer stock"
msgstr "Voorraad overzetten"
-#: stock/templates/stock/item_base.html:91
-#: templates/js/translated/stock.js:1972
+#: stock/templates/stock/item_base.html:88
+#: templates/js/translated/stock.js:1973
msgid "Assign to customer"
msgstr ""
-#: stock/templates/stock/item_base.html:94
+#: stock/templates/stock/item_base.html:91
msgid "Return to stock"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:97
+#: stock/templates/stock/item_base.html:94
msgid "Uninstall"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install stock item"
msgstr ""
-#: stock/templates/stock/item_base.html:101
+#: stock/templates/stock/item_base.html:98
msgid "Install"
msgstr ""
-#: stock/templates/stock/item_base.html:115
+#: stock/templates/stock/item_base.html:112
msgid "Convert to variant"
msgstr ""
-#: stock/templates/stock/item_base.html:118
+#: stock/templates/stock/item_base.html:115
msgid "Duplicate stock item"
-msgstr ""
+msgstr "Artikel dupliceren"
+
+#: stock/templates/stock/item_base.html:117
+msgid "Edit stock item"
+msgstr "Bewerk voorraad item"
#: stock/templates/stock/item_base.html:120
-msgid "Edit stock item"
-msgstr ""
-
-#: stock/templates/stock/item_base.html:123
msgid "Delete stock item"
-msgstr ""
+msgstr "Voorraadartikel verwijderen"
-#: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139
-#: templates/js/translated/build.js:2295 templates/navbar.html:38
+#: stock/templates/stock/item_base.html:166 templates/InvenTree/search.html:139
+#: templates/js/translated/build.js:2298 templates/navbar.html:38
msgid "Build"
msgstr "Product"
-#: stock/templates/stock/item_base.html:211
+#: stock/templates/stock/item_base.html:208
msgid "No manufacturer set"
msgstr "Geen fabrikant geselecteerd"
-#: stock/templates/stock/item_base.html:251
+#: stock/templates/stock/item_base.html:248
msgid "You are not in the list of owners of this item. This stock item cannot be edited."
-msgstr ""
+msgstr "U staat niet in de lijst van eigenaars van deze locatie. Deze voorraadlocatie kan niet worden bewerkt."
-#: stock/templates/stock/item_base.html:252
-#: stock/templates/stock/location.html:146
+#: stock/templates/stock/item_base.html:249
+#: stock/templates/stock/location.html:147
msgid "Read only"
-msgstr ""
+msgstr "Alleen lezen"
-#: stock/templates/stock/item_base.html:265
+#: stock/templates/stock/item_base.html:262
msgid "This stock item is unavailable"
-msgstr ""
+msgstr "Dit voorraadartikel is niet beschikbaar"
-#: stock/templates/stock/item_base.html:271
+#: stock/templates/stock/item_base.html:268
msgid "This stock item is in production and cannot be edited."
-msgstr ""
+msgstr "Deze voorraad is in productie en kan niet worden bewerkt."
-#: stock/templates/stock/item_base.html:272
+#: stock/templates/stock/item_base.html:269
msgid "Edit the stock item from the build view."
-msgstr ""
+msgstr "Bewerk het voorraaditem uit de build weergave."
-#: stock/templates/stock/item_base.html:287
+#: stock/templates/stock/item_base.html:284
msgid "This stock item is allocated to Sales Order"
msgstr "Dit voorraadartikel is toegewezen aan Verkooporder"
-#: stock/templates/stock/item_base.html:295
+#: stock/templates/stock/item_base.html:292
msgid "This stock item is allocated to Build Order"
msgstr "Dit voorraadartikel is toegewezen aan Productieorder"
-#: stock/templates/stock/item_base.html:311
+#: stock/templates/stock/item_base.html:308
msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted"
-msgstr ""
+msgstr "Dit voorraaditem is geserialiseerd. Het heeft een uniek serienummer en de hoeveelheid kan niet worden aangepast"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "previous page"
msgstr "vorige pagina"
-#: stock/templates/stock/item_base.html:317
+#: stock/templates/stock/item_base.html:314
msgid "Navigate to previous serial number"
-msgstr ""
+msgstr "Navigeer naar het vorige serienummer"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "next page"
msgstr "volgende pagina"
-#: stock/templates/stock/item_base.html:326
+#: stock/templates/stock/item_base.html:323
msgid "Navigate to next serial number"
-msgstr ""
+msgstr "Navigeer naar het volgende serienummer"
-#: stock/templates/stock/item_base.html:398
-#: templates/js/translated/build.js:2552
+#: stock/templates/stock/item_base.html:395
+#: templates/js/translated/build.js:2559
msgid "No location set"
msgstr "Geen locatie ingesteld"
-#: stock/templates/stock/item_base.html:413
+#: stock/templates/stock/item_base.html:410
msgid "Tests"
-msgstr ""
+msgstr "Testen"
-#: stock/templates/stock/item_base.html:419
+#: stock/templates/stock/item_base.html:416
msgid "This stock item has not passed all required tests"
-msgstr ""
+msgstr "Dit voorraadartikel heeft niet alle vereiste tests doorstaan"
-#: stock/templates/stock/item_base.html:437
+#: stock/templates/stock/item_base.html:434
#, python-format
msgid "This StockItem expired on %(item.expiry_date)s"
-msgstr ""
+msgstr "Dit voorraadartikel is verlopen op %(item.expiry_date)s"
-#: stock/templates/stock/item_base.html:439
+#: stock/templates/stock/item_base.html:436
#, python-format
msgid "This StockItem expires on %(item.expiry_date)s"
-msgstr ""
+msgstr "Dit voorraadartikel verloopt op %(item.expiry_date)s"
-#: stock/templates/stock/item_base.html:455
+#: stock/templates/stock/item_base.html:452
msgid "No stocktake performed"
-msgstr ""
+msgstr "Er is geen voorraad uitgevoerd"
-#: stock/templates/stock/item_base.html:504
-#: templates/js/translated/stock.js:2037
+#: stock/templates/stock/item_base.html:501
+#: templates/js/translated/stock.js:2038
msgid "stock item"
-msgstr ""
+msgstr "Voorraad item"
-#: stock/templates/stock/item_base.html:527
+#: stock/templates/stock/item_base.html:524
msgid "Edit Stock Status"
-msgstr ""
+msgstr "Bewerk voorraad status"
-#: stock/templates/stock/item_base.html:536
+#: stock/templates/stock/item_base.html:533
msgid "Stock Item QR Code"
-msgstr ""
+msgstr "Stock Item QR Code"
-#: stock/templates/stock/item_base.html:547
+#: stock/templates/stock/item_base.html:544
msgid "Link Barcode to Stock Item"
-msgstr ""
+msgstr "Link streepjescode aan standaard artikel"
+
+#: stock/templates/stock/item_base.html:608
+msgid "Select one of the part variants listed below."
+msgstr "Selecteer één van de hieronder vermelde onderdelen varianten."
#: stock/templates/stock/item_base.html:611
-msgid "Select one of the part variants listed below."
-msgstr ""
-
-#: stock/templates/stock/item_base.html:614
msgid "Warning"
-msgstr ""
+msgstr "Waarschuwing"
-#: stock/templates/stock/item_base.html:615
+#: stock/templates/stock/item_base.html:612
msgid "This action cannot be easily undone"
-msgstr ""
+msgstr "Deze actie kan niet makkelijk ongedaan worden gemaakt"
-#: stock/templates/stock/item_base.html:623
+#: stock/templates/stock/item_base.html:620
msgid "Convert Stock Item"
-msgstr ""
+msgstr "Converteer voorraad item"
-#: stock/templates/stock/item_base.html:656
+#: stock/templates/stock/item_base.html:653
msgid "Return to Stock"
-msgstr ""
+msgstr "Terug naar voorraad"
#: stock/templates/stock/item_serialize.html:5
msgid "Create serialized items from this stock item."
-msgstr ""
+msgstr "Creëer geserialiseerde artikelen van dit voorraadartikel."
#: stock/templates/stock/item_serialize.html:7
msgid "Select quantity to serialize, and unique serial numbers."
-msgstr ""
+msgstr "Selecteer aantal om te serialiseren en unieke serienummers."
-#: stock/templates/stock/location.html:35
+#: stock/templates/stock/location.html:36
msgid "Perform stocktake for this stock location"
-msgstr ""
+msgstr "Voorraadcontrole uitvoeren voor deze voorraadlocatie"
-#: stock/templates/stock/location.html:42
+#: stock/templates/stock/location.html:43
msgid "Locate stock location"
-msgstr ""
+msgstr "Zoek voorraad locatie"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan stock items into this location"
-msgstr ""
+msgstr "Scan voorraadartikelen naar deze locatie"
-#: stock/templates/stock/location.html:60
+#: stock/templates/stock/location.html:61
msgid "Scan In Stock Items"
-msgstr ""
+msgstr "Scan items op voorraad"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan stock container into this location"
-msgstr ""
+msgstr "Scan de voorraadcontainer naar deze locatie"
-#: stock/templates/stock/location.html:61
+#: stock/templates/stock/location.html:62
msgid "Scan In Container"
-msgstr ""
+msgstr "Scan in container"
-#: stock/templates/stock/location.html:72
+#: stock/templates/stock/location.html:73
msgid "Print Location Report"
-msgstr ""
+msgstr "Print locatie rapport"
-#: stock/templates/stock/location.html:101
+#: stock/templates/stock/location.html:102
msgid "Location actions"
msgstr "Locatie acties"
-#: stock/templates/stock/location.html:103
+#: stock/templates/stock/location.html:104
msgid "Edit location"
msgstr "Bewerk locatie"
-#: stock/templates/stock/location.html:105
+#: stock/templates/stock/location.html:106
msgid "Delete location"
msgstr "Verwijder locatie"
-#: stock/templates/stock/location.html:135
+#: stock/templates/stock/location.html:136
msgid "Top level stock location"
-msgstr ""
+msgstr "Locatie voorraad topniveau"
-#: stock/templates/stock/location.html:141
+#: stock/templates/stock/location.html:142
msgid "Location Owner"
-msgstr ""
+msgstr "Locatie eigenaar"
-#: stock/templates/stock/location.html:145
+#: stock/templates/stock/location.html:146
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:173
+#: stock/templates/stock/location.html:174
msgid "Location Type"
-msgstr ""
+msgstr "Locatie type"
-#: stock/templates/stock/location.html:223
+#: stock/templates/stock/location.html:224
msgid "Create new stock location"
msgstr "Maak nieuwe voorraadlocatie"
-#: stock/templates/stock/location.html:224
+#: stock/templates/stock/location.html:225
msgid "New Location"
msgstr "Nieuwe Locatie"
-#: stock/templates/stock/location.html:298
-#: templates/js/translated/stock.js:2657
+#: stock/templates/stock/location.html:299
+#: templates/js/translated/stock.js:2658
msgid "stock location"
-msgstr ""
+msgstr "Voorraad locatie"
-#: stock/templates/stock/location.html:320
+#: stock/templates/stock/location.html:321
msgid "Scanned stock container into this location"
-msgstr ""
+msgstr "Gescande voorraadcontainer op deze locatie"
-#: stock/templates/stock/location.html:393
+#: stock/templates/stock/location.html:394
msgid "Stock Location QR Code"
-msgstr ""
+msgstr "Voorraadlocatie QR-code"
-#: stock/templates/stock/location.html:404
+#: stock/templates/stock/location.html:405
msgid "Link Barcode to Stock Location"
-msgstr ""
+msgstr "Link streepjescode aan voorraad locatie"
#: stock/templates/stock/stock_app_base.html:16
msgid "Loading..."
-msgstr ""
+msgstr "Laden..."
#: stock/templates/stock/stock_sidebar.html:5
msgid "Stock Tracking"
-msgstr ""
-
-#: stock/templates/stock/stock_sidebar.html:8
-msgid "Allocations"
-msgstr ""
+msgstr "Voorraad volgen"
#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7
msgid "Permission Denied"
@@ -10702,7 +11066,7 @@ msgstr ""
#: templates/InvenTree/index.html:77
msgid "BOM Waiting Validation"
-msgstr ""
+msgstr "Stuklijst BOM wacht op validatie"
#: templates/InvenTree/index.html:106
msgid "Recently Updated"
@@ -10710,7 +11074,7 @@ msgstr ""
#: templates/InvenTree/index.html:134
msgid "Depleted Stock"
-msgstr ""
+msgstr "Uitgebreide voorraad"
#: templates/InvenTree/index.html:148
msgid "Required for Build Orders"
@@ -10718,11 +11082,11 @@ msgstr ""
#: templates/InvenTree/index.html:156
msgid "Expired Stock"
-msgstr ""
+msgstr "Verlopen voorraad"
#: templates/InvenTree/index.html:172
msgid "Stale Stock"
-msgstr ""
+msgstr "Verouderde voorraad"
#: templates/InvenTree/index.html:199
msgid "Build Orders In Progress"
@@ -10898,11 +11262,11 @@ msgstr ""
#: templates/InvenTree/settings/part_stocktake.html:7
msgid "Stocktake Settings"
-msgstr ""
+msgstr "Voorraadcontrole instellingen"
#: templates/InvenTree/settings/part_stocktake.html:25
msgid "Stocktake Reports"
-msgstr ""
+msgstr "Voorraadcontrole rapporten"
#: templates/InvenTree/settings/physical_units.html:8
#: templates/InvenTree/settings/sidebar.html:35
@@ -11107,9 +11471,9 @@ msgid "Rate"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:81
-#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:108
+#: templates/js/translated/forms.js:548 templates/js/translated/helpers.js:109
#: templates/js/translated/part.js:395 templates/js/translated/pricing.js:629
-#: templates/js/translated/stock.js:252 users/models.py:406
+#: templates/js/translated/stock.js:252 users/models.py:408
msgid "Delete"
msgstr "Verwijderen"
@@ -11130,7 +11494,7 @@ msgid "No project codes found"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:158
-#: templates/js/translated/build.js:2400
+#: templates/js/translated/build.js:2403
msgid "group"
msgstr ""
@@ -11176,7 +11540,7 @@ msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:439
msgid "No stock location types found"
-msgstr ""
+msgstr "Geen voorraadlocatie typen gevonden"
#: templates/InvenTree/settings/settings_staff_js.html:464
msgid "Location count"
@@ -11196,7 +11560,7 @@ msgid "Delete Location Type"
msgstr ""
#: templates/InvenTree/settings/settings_staff_js.html:503
-#: templates/InvenTree/settings/stock.html:38
+#: templates/InvenTree/settings/stock.html:39
msgid "New Location Type"
msgstr ""
@@ -11253,7 +11617,7 @@ msgstr "Verkooporder Instellingen"
msgid "Stock Settings"
msgstr ""
-#: templates/InvenTree/settings/stock.html:34
+#: templates/InvenTree/settings/stock.html:35
msgid "Stock Location Types"
msgstr ""
@@ -11280,7 +11644,7 @@ msgid "Unverified"
msgstr ""
#: templates/InvenTree/settings/user.html:80
-#: templates/js/translated/company.js:957
+#: templates/js/translated/company.js:958
msgid "Primary"
msgstr ""
@@ -11532,7 +11896,7 @@ msgid "Submit Bug Report"
msgstr ""
#: templates/about.html:91 templates/clip.html:4
-#: templates/js/translated/helpers.js:592
+#: templates/js/translated/helpers.js:598
msgid "copy to clipboard"
msgstr ""
@@ -11738,23 +12102,24 @@ msgstr ""
msgid "Barcode Identifier"
msgstr ""
-#: templates/base.html:103
+#: templates/base.html:102
msgid "Server Restart Required"
msgstr ""
-#: templates/base.html:106
+#: templates/base.html:105
msgid "A configuration option has been changed which requires a server restart"
msgstr ""
-#: templates/base.html:106 templates/base.html:116
+#: templates/base.html:105 templates/base.html:115
+#: templates/socialaccount/authentication_error.html:13
msgid "Contact your system administrator for further information"
msgstr ""
-#: templates/base.html:113
+#: templates/base.html:112
msgid "Pending Database Migrations"
msgstr ""
-#: templates/base.html:116
+#: templates/base.html:115
msgid "There are pending database migrations which require attention"
msgstr ""
@@ -11787,7 +12152,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:1674 templates/js/translated/build.js:2747
+#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2765
msgid "Required Quantity"
msgstr "Vereiste Hoeveelheid"
@@ -11801,7 +12166,7 @@ msgid "Click on the following link to view this part"
msgstr ""
#: templates/email/low_stock_notification.html:18
-#: templates/js/translated/part.js:3237
+#: templates/js/translated/part.js:3253
msgid "Minimum Quantity"
msgstr ""
@@ -12026,27 +12391,27 @@ msgstr ""
#: templates/js/translated/bom.js:78
msgid "Create BOM Item"
-msgstr ""
+msgstr "Creëer stuklijst BOM Item"
#: templates/js/translated/bom.js:132
msgid "Display row data"
-msgstr ""
+msgstr "Toon rijgegevens"
#: templates/js/translated/bom.js:188
msgid "Row Data"
-msgstr ""
+msgstr "Rij gegevens"
#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700
#: templates/js/translated/modals.js:75 templates/js/translated/modals.js:629
#: templates/js/translated/modals.js:757 templates/js/translated/modals.js:1065
-#: templates/js/translated/purchase_order.js:797 templates/modals.html:15
+#: templates/js/translated/purchase_order.js:780 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:306
msgid "Download BOM Template"
-msgstr ""
+msgstr "Download stuklijst BOM sjabloon"
#: templates/js/translated/bom.js:351
msgid "Multi Level BOM"
@@ -12058,67 +12423,67 @@ msgstr ""
#: templates/js/translated/bom.js:357
msgid "Levels"
-msgstr ""
+msgstr "Levels"
#: templates/js/translated/bom.js:358
msgid "Select maximum number of BOM levels to export (0 = all levels)"
-msgstr ""
+msgstr "Selecteer het maximum aantal te exporteren stuklijst BOM niveaus (0 = alle levels)"
#: templates/js/translated/bom.js:365
msgid "Include Alternative Parts"
-msgstr ""
+msgstr "Inclusief alternatieve onderdelen"
#: templates/js/translated/bom.js:366
msgid "Include alternative parts in exported BOM"
-msgstr ""
+msgstr "Inclusief alternatieve onderdelen in geëxporteerd stuklijst BOM"
#: templates/js/translated/bom.js:371
msgid "Include Parameter Data"
-msgstr ""
+msgstr "Voeg parametergegevens toe"
#: templates/js/translated/bom.js:372
msgid "Include part parameter data in exported BOM"
-msgstr ""
+msgstr "Voeg deel parameter gegevens toe aan geëxporteerde stuklijst BOM"
#: templates/js/translated/bom.js:377
msgid "Include Stock Data"
-msgstr ""
+msgstr "Inclusief voorraadgegevens"
#: templates/js/translated/bom.js:378
msgid "Include part stock data in exported BOM"
-msgstr ""
+msgstr "Inclusief voorraadgegevens in geëxporteerde stuklijst BOM"
#: templates/js/translated/bom.js:383
msgid "Include Manufacturer Data"
-msgstr ""
+msgstr "Inclusief fabrikant gegevens"
#: templates/js/translated/bom.js:384
msgid "Include part manufacturer data in exported BOM"
-msgstr ""
+msgstr "Voeg fabrikant gegevens toe aan geëxporteerd stuklijst BOM"
#: templates/js/translated/bom.js:389
msgid "Include Supplier Data"
-msgstr ""
+msgstr "Inclusief leveranciersgegevens"
#: templates/js/translated/bom.js:390
msgid "Include part supplier data in exported BOM"
-msgstr ""
+msgstr "Inclusief leveranciersgegevens in geëxporteerde stuklijst BOM"
#: templates/js/translated/bom.js:395
msgid "Include Pricing Data"
-msgstr ""
+msgstr "Inclusief prijsgegevens"
#: templates/js/translated/bom.js:396
msgid "Include part pricing data in exported BOM"
-msgstr ""
+msgstr "Voeg onderdelenprijs gegevens toe aan geëxporteerde stuklijst BOM"
#: templates/js/translated/bom.js:591
msgid "Remove substitute part"
-msgstr ""
+msgstr "Vervanging onderdeel verwijderen"
#: templates/js/translated/bom.js:645
msgid "Select and add a new substitute part using the input below"
-msgstr ""
+msgstr "Selecteer en voeg een nieuw vervangingsonderdeel toe met behulp van onderstaande invoer"
#: templates/js/translated/bom.js:656
msgid "Are you sure you wish to remove this substitute part link?"
@@ -12126,522 +12491,522 @@ msgstr ""
#: templates/js/translated/bom.js:662
msgid "Remove Substitute Part"
-msgstr ""
+msgstr "Verwijder vervangend deel"
#: templates/js/translated/bom.js:701
msgid "Add Substitute"
-msgstr ""
+msgstr "Plaatsvervanger toevoegen"
#: templates/js/translated/bom.js:702
msgid "Edit BOM Item Substitutes"
-msgstr ""
+msgstr "Stuklijst BOM Item vervangingen bewerken"
#: templates/js/translated/bom.js:764
msgid "All selected BOM items will be deleted"
-msgstr ""
+msgstr "Alle geselecteerde stuklijst BOM items zullen worden verwijderd"
#: templates/js/translated/bom.js:780
msgid "Delete selected BOM items?"
-msgstr ""
+msgstr "Geselecteerde stuklijst BOM items verwijderen?"
#: templates/js/translated/bom.js:826
msgid "Delete items"
-msgstr ""
+msgstr "Artikelen verwijderen"
#: templates/js/translated/bom.js:936
msgid "Load BOM for subassembly"
-msgstr ""
+msgstr "Laad stuklijst BOM voor sub assemblage"
#: templates/js/translated/bom.js:946
msgid "Substitutes Available"
-msgstr ""
+msgstr "Vervangingen beschikbaar"
-#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2673
+#: templates/js/translated/bom.js:950 templates/js/translated/build.js:2682
msgid "Variant stock allowed"
-msgstr ""
+msgstr "Variant voorraad toegestaan"
#: templates/js/translated/bom.js:1014
msgid "Substitutes"
-msgstr ""
+msgstr "Vervanging"
#: templates/js/translated/bom.js:1139
msgid "BOM pricing is complete"
-msgstr ""
+msgstr "Stuklijst BOM prijs is voltooid"
#: templates/js/translated/bom.js:1144
msgid "BOM pricing is incomplete"
-msgstr ""
+msgstr "Stuklijst BOM prijs aanduiding is niet compleet"
#: templates/js/translated/bom.js:1151
msgid "No pricing available"
-msgstr ""
+msgstr "Geen prijs beschikbaar"
-#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2812
+#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2830
msgid "External stock"
-msgstr ""
+msgstr "Externe voorraad"
-#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2786
-#: templates/js/translated/sales_order.js:1946
+#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2804
+#: templates/js/translated/sales_order.js:1927
msgid "No Stock Available"
-msgstr ""
+msgstr "Geen voorraad beschikbaar"
-#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2790
+#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2808
msgid "Includes variant and substitute stock"
-msgstr ""
+msgstr "Inclusief variant en vervangende voorraad"
-#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2792
+#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2810
#: templates/js/translated/part.js:1263
-#: templates/js/translated/sales_order.js:1943
+#: templates/js/translated/sales_order.js:1924
msgid "Includes variant stock"
-msgstr ""
+msgstr "Inclusief variant voorraad"
-#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2794
+#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2812
msgid "Includes substitute stock"
-msgstr ""
+msgstr "Inclusief vervangende voorraad"
-#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2777
+#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2795
msgid "Consumable item"
-msgstr ""
+msgstr "Verbruiksartikel"
#: templates/js/translated/bom.js:1285
msgid "Validate BOM Item"
-msgstr ""
+msgstr "Valideren stuklijstBOM Item"
#: templates/js/translated/bom.js:1287
msgid "This line has been validated"
-msgstr ""
+msgstr "Deze regel is gevalideerd"
#: templates/js/translated/bom.js:1289
msgid "Edit substitute parts"
-msgstr ""
+msgstr "Bewerk vervangende onderdelen"
#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486
msgid "Edit BOM Item"
-msgstr ""
+msgstr "Edit stuklijst BOM Item"
#: templates/js/translated/bom.js:1293
msgid "Delete BOM Item"
-msgstr ""
+msgstr "Verwijder stuklijst BOM Item"
#: templates/js/translated/bom.js:1313
msgid "View BOM"
-msgstr ""
+msgstr "Bekijk stuklijst BOM"
#: templates/js/translated/bom.js:1397
msgid "No BOM items found"
-msgstr ""
+msgstr "Geen stuklijst BOM producten gevonden"
-#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2658
+#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2667
msgid "Required Part"
-msgstr ""
+msgstr "Vereist onderdeel"
#: templates/js/translated/bom.js:1683
msgid "Inherited from parent BOM"
-msgstr ""
+msgstr "Overgenomen van bovenliggende stuklijst BOM"
#: templates/js/translated/build.js:143
msgid "Edit Build Order"
msgstr ""
-#: templates/js/translated/build.js:191
+#: templates/js/translated/build.js:194
msgid "Create Build Order"
msgstr ""
-#: templates/js/translated/build.js:223
+#: templates/js/translated/build.js:226
msgid "Cancel Build Order"
msgstr ""
-#: templates/js/translated/build.js:232
+#: templates/js/translated/build.js:235
msgid "Are you sure you wish to cancel this build?"
msgstr ""
-#: templates/js/translated/build.js:238
+#: templates/js/translated/build.js:241
msgid "Stock items have been allocated to this build order"
msgstr ""
-#: templates/js/translated/build.js:245
+#: templates/js/translated/build.js:248
msgid "There are incomplete outputs remaining for this build order"
msgstr ""
-#: templates/js/translated/build.js:297
+#: templates/js/translated/build.js:300
msgid "Build order is ready to be completed"
msgstr ""
-#: templates/js/translated/build.js:305
+#: templates/js/translated/build.js:308
msgid "This build order cannot be completed as there are incomplete outputs"
msgstr ""
-#: templates/js/translated/build.js:310
+#: templates/js/translated/build.js:313
msgid "Build Order is incomplete"
msgstr ""
-#: templates/js/translated/build.js:328
+#: templates/js/translated/build.js:331
msgid "Complete Build Order"
msgstr ""
-#: templates/js/translated/build.js:369 templates/js/translated/stock.js:127
+#: templates/js/translated/build.js:372 templates/js/translated/stock.js:127
#: templates/js/translated/stock.js:301
msgid "Next available serial number"
msgstr ""
-#: templates/js/translated/build.js:371 templates/js/translated/stock.js:129
+#: templates/js/translated/build.js:374 templates/js/translated/stock.js:129
#: templates/js/translated/stock.js:303
msgid "Latest serial number"
msgstr ""
-#: templates/js/translated/build.js:380
+#: templates/js/translated/build.js:383
msgid "The Bill of Materials contains trackable parts"
msgstr ""
-#: templates/js/translated/build.js:381
+#: templates/js/translated/build.js:384
msgid "Build outputs must be generated individually"
msgstr ""
-#: templates/js/translated/build.js:389
+#: templates/js/translated/build.js:392
msgid "Trackable parts can have serial numbers specified"
msgstr ""
-#: templates/js/translated/build.js:390
+#: templates/js/translated/build.js:393
msgid "Enter serial numbers to generate multiple single build outputs"
msgstr ""
-#: templates/js/translated/build.js:397
+#: templates/js/translated/build.js:400
msgid "Create Build Output"
msgstr ""
-#: templates/js/translated/build.js:428
+#: templates/js/translated/build.js:431
msgid "Allocate stock items to this build output"
msgstr ""
-#: templates/js/translated/build.js:436
+#: templates/js/translated/build.js:439
msgid "Deallocate stock from build output"
msgstr ""
-#: templates/js/translated/build.js:445
+#: templates/js/translated/build.js:448
msgid "Complete build output"
msgstr ""
-#: templates/js/translated/build.js:453
+#: templates/js/translated/build.js:456
msgid "Scrap build output"
msgstr ""
-#: templates/js/translated/build.js:460
+#: templates/js/translated/build.js:463
msgid "Delete build output"
msgstr ""
-#: templates/js/translated/build.js:480
+#: templates/js/translated/build.js:483
msgid "Are you sure you wish to deallocate the selected stock items from this build?"
msgstr ""
-#: templates/js/translated/build.js:498
+#: templates/js/translated/build.js:501
msgid "Deallocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:584 templates/js/translated/build.js:711
-#: templates/js/translated/build.js:836
+#: templates/js/translated/build.js:587 templates/js/translated/build.js:714
+#: templates/js/translated/build.js:839
msgid "Select Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:585 templates/js/translated/build.js:712
-#: templates/js/translated/build.js:837
+#: templates/js/translated/build.js:588 templates/js/translated/build.js:715
+#: templates/js/translated/build.js:840
msgid "At least one build output must be selected"
msgstr ""
-#: templates/js/translated/build.js:599
+#: templates/js/translated/build.js:602
msgid "Selected build outputs will be marked as complete"
msgstr ""
-#: templates/js/translated/build.js:603 templates/js/translated/build.js:736
-#: templates/js/translated/build.js:859
+#: templates/js/translated/build.js:606 templates/js/translated/build.js:739
+#: templates/js/translated/build.js:862
msgid "Output"
msgstr ""
-#: templates/js/translated/build.js:630
+#: templates/js/translated/build.js:633
msgid "Complete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:727
+#: templates/js/translated/build.js:730
msgid "Selected build outputs will be marked as scrapped"
msgstr ""
-#: templates/js/translated/build.js:729
+#: templates/js/translated/build.js:732
msgid "Scrapped output are marked as rejected"
msgstr ""
-#: templates/js/translated/build.js:730
+#: templates/js/translated/build.js:733
msgid "Allocated stock items will no longer be available"
msgstr ""
-#: templates/js/translated/build.js:731
+#: templates/js/translated/build.js:734
msgid "The completion status of the build order will not be adjusted"
msgstr ""
-#: templates/js/translated/build.js:761
+#: templates/js/translated/build.js:764
msgid "Scrap Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:851
+#: templates/js/translated/build.js:854
msgid "Selected build outputs will be deleted"
msgstr ""
-#: templates/js/translated/build.js:853
+#: templates/js/translated/build.js:856
msgid "Build output data will be permanently deleted"
msgstr ""
-#: templates/js/translated/build.js:854
+#: templates/js/translated/build.js:857
msgid "Allocated stock items will be returned to stock"
msgstr ""
-#: templates/js/translated/build.js:872
+#: templates/js/translated/build.js:875
msgid "Delete Build Outputs"
msgstr ""
-#: templates/js/translated/build.js:959
+#: templates/js/translated/build.js:962
msgid "Delete allocations"
msgstr ""
-#: templates/js/translated/build.js:966
+#: templates/js/translated/build.js:969
msgid "Delete Stock Allocations"
msgstr ""
-#: templates/js/translated/build.js:989
+#: templates/js/translated/build.js:992
msgid "No allocated stock"
msgstr ""
-#: templates/js/translated/build.js:1045
+#: templates/js/translated/build.js:1048
msgid "Stock item"
msgstr ""
-#: templates/js/translated/build.js:1070
+#: templates/js/translated/build.js:1073
msgid "Edit build allocation"
msgstr ""
-#: templates/js/translated/build.js:1071
+#: templates/js/translated/build.js:1074
msgid "Delete build allocation"
msgstr ""
-#: templates/js/translated/build.js:1089
+#: templates/js/translated/build.js:1092
msgid "Edit Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1102
+#: templates/js/translated/build.js:1105
msgid "Delete Build Allocation"
msgstr ""
-#: templates/js/translated/build.js:1133
+#: templates/js/translated/build.js:1136
msgid "No build order allocations found"
msgstr ""
-#: templates/js/translated/build.js:1178
+#: templates/js/translated/build.js:1181
msgid "Location not specified"
msgstr ""
-#: templates/js/translated/build.js:1200
+#: templates/js/translated/build.js:1203
msgid "Complete outputs"
msgstr ""
-#: templates/js/translated/build.js:1218
+#: templates/js/translated/build.js:1221
msgid "Scrap outputs"
msgstr ""
-#: templates/js/translated/build.js:1236
+#: templates/js/translated/build.js:1239
msgid "Delete outputs"
msgstr ""
-#: templates/js/translated/build.js:1289
+#: templates/js/translated/build.js:1292
msgid "build output"
msgstr ""
-#: templates/js/translated/build.js:1290
+#: templates/js/translated/build.js:1293
msgid "build outputs"
msgstr ""
-#: templates/js/translated/build.js:1294
+#: templates/js/translated/build.js:1297
msgid "Build output actions"
msgstr ""
-#: templates/js/translated/build.js:1470
+#: templates/js/translated/build.js:1473
msgid "No active build outputs found"
msgstr ""
-#: templates/js/translated/build.js:1563
+#: templates/js/translated/build.js:1566
msgid "Allocated Lines"
msgstr ""
-#: templates/js/translated/build.js:1577
+#: templates/js/translated/build.js:1580
msgid "Required Tests"
msgstr ""
-#: templates/js/translated/build.js:1749
-#: templates/js/translated/purchase_order.js:611
-#: templates/js/translated/sales_order.js:1207
+#: templates/js/translated/build.js:1752
+#: templates/js/translated/purchase_order.js:594
+#: templates/js/translated/sales_order.js:1173
msgid "Select Parts"
msgstr ""
-#: templates/js/translated/build.js:1750
-#: templates/js/translated/sales_order.js:1208
+#: templates/js/translated/build.js:1753
+#: templates/js/translated/sales_order.js:1174
msgid "You must select at least one part to allocate"
msgstr ""
-#: templates/js/translated/build.js:1813
-#: templates/js/translated/sales_order.js:1157
+#: templates/js/translated/build.js:1816
+#: templates/js/translated/sales_order.js:1123
msgid "Specify stock allocation quantity"
msgstr ""
-#: templates/js/translated/build.js:1890
+#: templates/js/translated/build.js:1893
msgid "All Parts Allocated"
msgstr ""
-#: templates/js/translated/build.js:1891
+#: templates/js/translated/build.js:1894
msgid "All selected parts have been fully allocated"
msgstr ""
-#: templates/js/translated/build.js:1905
-#: templates/js/translated/sales_order.js:1222
+#: templates/js/translated/build.js:1908
+#: templates/js/translated/sales_order.js:1188
msgid "Select source location (leave blank to take from all locations)"
msgstr ""
-#: templates/js/translated/build.js:1933
+#: templates/js/translated/build.js:1936
msgid "Allocate Stock Items to Build Order"
msgstr ""
-#: templates/js/translated/build.js:1944
-#: templates/js/translated/sales_order.js:1319
+#: templates/js/translated/build.js:1947
+#: templates/js/translated/sales_order.js:1285
msgid "No matching stock locations"
msgstr ""
-#: templates/js/translated/build.js:2017
-#: templates/js/translated/sales_order.js:1398
+#: templates/js/translated/build.js:2020
+#: templates/js/translated/sales_order.js:1364
msgid "No matching stock items"
msgstr ""
-#: templates/js/translated/build.js:2114
+#: templates/js/translated/build.js:2117
msgid "Automatic Stock Allocation"
msgstr ""
-#: templates/js/translated/build.js:2115
+#: templates/js/translated/build.js:2118
msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines"
msgstr ""
-#: templates/js/translated/build.js:2117
+#: templates/js/translated/build.js:2120
msgid "If a location is specified, stock will only be allocated from that location"
msgstr ""
-#: templates/js/translated/build.js:2118
+#: templates/js/translated/build.js:2121
msgid "If stock is considered interchangeable, it will be allocated from the first location it is found"
msgstr ""
-#: templates/js/translated/build.js:2119
+#: templates/js/translated/build.js:2122
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:2149
+#: templates/js/translated/build.js:2152
msgid "Allocate Stock Items"
msgstr ""
-#: templates/js/translated/build.js:2254
+#: templates/js/translated/build.js:2257
msgid "No builds matching query"
msgstr ""
-#: templates/js/translated/build.js:2289 templates/js/translated/build.js:2652
+#: templates/js/translated/build.js:2292 templates/js/translated/build.js:2661
#: templates/js/translated/forms.js:2196 templates/js/translated/forms.js:2212
#: templates/js/translated/part.js:2322 templates/js/translated/part.js:2761
-#: templates/js/translated/stock.js:2068 templates/js/translated/stock.js:2795
+#: templates/js/translated/stock.js:2069 templates/js/translated/stock.js:2796
msgid "Select"
msgstr ""
-#: templates/js/translated/build.js:2303
+#: templates/js/translated/build.js:2306
msgid "Build order is overdue"
msgstr ""
-#: templates/js/translated/build.js:2385 templates/js/translated/stock.js:3126
+#: templates/js/translated/build.js:2388 templates/js/translated/stock.js:3127
msgid "No user information"
msgstr ""
-#: templates/js/translated/build.js:2561
-#: templates/js/translated/sales_order.js:1682
+#: templates/js/translated/build.js:2568
+#: templates/js/translated/sales_order.js:1663
msgid "Edit stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2562
-#: templates/js/translated/sales_order.js:1683
+#: templates/js/translated/build.js:2569
+#: templates/js/translated/sales_order.js:1664
msgid "Delete stock allocation"
msgstr ""
-#: templates/js/translated/build.js:2577
+#: templates/js/translated/build.js:2584
msgid "Edit Allocation"
msgstr ""
-#: templates/js/translated/build.js:2589
+#: templates/js/translated/build.js:2596
msgid "Remove Allocation"
msgstr ""
-#: templates/js/translated/build.js:2628
+#: templates/js/translated/build.js:2636
msgid "build line"
msgstr ""
-#: templates/js/translated/build.js:2629
+#: templates/js/translated/build.js:2637
msgid "build lines"
msgstr ""
-#: templates/js/translated/build.js:2647
+#: templates/js/translated/build.js:2656
msgid "No build lines found"
msgstr ""
-#: templates/js/translated/build.js:2677 templates/js/translated/part.js:793
+#: templates/js/translated/build.js:2686 templates/js/translated/part.js:793
#: templates/js/translated/part.js:1209
msgid "Trackable part"
msgstr ""
-#: templates/js/translated/build.js:2720
+#: templates/js/translated/build.js:2729
msgid "Gets Inherited"
msgstr ""
-#: templates/js/translated/build.js:2730
+#: templates/js/translated/build.js:2748
msgid "Unit Quantity"
msgstr ""
-#: templates/js/translated/build.js:2782
-#: templates/js/translated/sales_order.js:1951
+#: templates/js/translated/build.js:2800
+#: templates/js/translated/sales_order.js:1932
msgid "Sufficient stock available"
-msgstr ""
+msgstr "Te veel voorraad beschikbaar"
-#: templates/js/translated/build.js:2837
+#: templates/js/translated/build.js:2855
msgid "Consumable Item"
msgstr ""
-#: templates/js/translated/build.js:2844
+#: templates/js/translated/build.js:2862
msgid "Tracked item"
msgstr ""
-#: templates/js/translated/build.js:2845
+#: templates/js/translated/build.js:2863
msgid "Allocate tracked items against individual build outputs"
msgstr ""
-#: templates/js/translated/build.js:2853
-#: templates/js/translated/sales_order.js:2052
+#: templates/js/translated/build.js:2871
+#: templates/js/translated/sales_order.js:2033
msgid "Build stock"
-msgstr ""
+msgstr "Voorraad bouwen"
-#: templates/js/translated/build.js:2858 templates/js/translated/stock.js:1953
+#: templates/js/translated/build.js:2876 templates/js/translated/stock.js:1954
msgid "Order stock"
-msgstr ""
+msgstr "Bestel voorraad"
-#: templates/js/translated/build.js:2862
-#: templates/js/translated/sales_order.js:2046
+#: templates/js/translated/build.js:2880
+#: templates/js/translated/sales_order.js:2027
msgid "Allocate stock"
-msgstr ""
+msgstr "Voorraad toewijzen"
-#: templates/js/translated/build.js:2866
+#: templates/js/translated/build.js:2884
msgid "Remove stock allocation"
-msgstr ""
+msgstr "Verwijder voorraad toewijzing"
#: templates/js/translated/company.js:98
msgid "Add Manufacturer"
msgstr ""
#: templates/js/translated/company.js:111
-#: templates/js/translated/company.js:213
+#: templates/js/translated/company.js:214
msgid "Add Manufacturer Part"
msgstr ""
@@ -12649,231 +13014,231 @@ msgstr ""
msgid "Edit Manufacturer Part"
msgstr ""
-#: templates/js/translated/company.js:201
+#: templates/js/translated/company.js:202
#: templates/js/translated/purchase_order.js:93
msgid "Add Supplier"
msgstr ""
-#: templates/js/translated/company.js:243
-#: templates/js/translated/purchase_order.js:318
+#: templates/js/translated/company.js:244
+#: templates/js/translated/purchase_order.js:301
msgid "Add Supplier Part"
msgstr ""
-#: templates/js/translated/company.js:344
+#: templates/js/translated/company.js:345
msgid "All selected supplier parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:360
+#: templates/js/translated/company.js:361
msgid "Delete Supplier Parts"
msgstr ""
-#: templates/js/translated/company.js:466
+#: templates/js/translated/company.js:467
msgid "Add new Company"
msgstr ""
-#: templates/js/translated/company.js:546
+#: templates/js/translated/company.js:547
msgid "Parts Supplied"
msgstr ""
-#: templates/js/translated/company.js:555
+#: templates/js/translated/company.js:556
msgid "Parts Manufactured"
msgstr ""
-#: templates/js/translated/company.js:570
+#: templates/js/translated/company.js:571
msgid "No company information found"
msgstr ""
-#: templates/js/translated/company.js:619
+#: templates/js/translated/company.js:620
msgid "Create New Contact"
msgstr ""
-#: templates/js/translated/company.js:635
-#: templates/js/translated/company.js:758
+#: templates/js/translated/company.js:636
+#: templates/js/translated/company.js:759
msgid "Edit Contact"
msgstr ""
-#: templates/js/translated/company.js:672
+#: templates/js/translated/company.js:673
msgid "All selected contacts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:678
-#: templates/js/translated/company.js:742
+#: templates/js/translated/company.js:679
+#: templates/js/translated/company.js:743
msgid "Role"
msgstr ""
-#: templates/js/translated/company.js:686
+#: templates/js/translated/company.js:687
msgid "Delete Contacts"
msgstr ""
-#: templates/js/translated/company.js:717
+#: templates/js/translated/company.js:718
msgid "No contacts found"
msgstr ""
-#: templates/js/translated/company.js:730
+#: templates/js/translated/company.js:731
msgid "Phone Number"
msgstr ""
-#: templates/js/translated/company.js:736
+#: templates/js/translated/company.js:737
msgid "Email Address"
msgstr ""
-#: templates/js/translated/company.js:762
+#: templates/js/translated/company.js:763
msgid "Delete Contact"
msgstr ""
-#: templates/js/translated/company.js:859
+#: templates/js/translated/company.js:860
msgid "Create New Address"
msgstr ""
-#: templates/js/translated/company.js:874
-#: templates/js/translated/company.js:1035
+#: templates/js/translated/company.js:875
+#: templates/js/translated/company.js:1036
msgid "Edit Address"
msgstr ""
-#: templates/js/translated/company.js:909
+#: templates/js/translated/company.js:910
msgid "All selected addresses will be deleted"
msgstr ""
-#: templates/js/translated/company.js:923
+#: templates/js/translated/company.js:924
msgid "Delete Addresses"
msgstr ""
-#: templates/js/translated/company.js:950
+#: templates/js/translated/company.js:951
msgid "No addresses found"
msgstr ""
-#: templates/js/translated/company.js:989
+#: templates/js/translated/company.js:990
msgid "Postal city"
msgstr ""
-#: templates/js/translated/company.js:995
+#: templates/js/translated/company.js:996
msgid "State/province"
msgstr ""
-#: templates/js/translated/company.js:1007
+#: templates/js/translated/company.js:1008
msgid "Courier notes"
msgstr ""
-#: templates/js/translated/company.js:1013
+#: templates/js/translated/company.js:1014
msgid "Internal notes"
msgstr ""
-#: templates/js/translated/company.js:1039
+#: templates/js/translated/company.js:1040
msgid "Delete Address"
msgstr ""
-#: templates/js/translated/company.js:1112
+#: templates/js/translated/company.js:1113
msgid "All selected manufacturer parts will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1127
+#: templates/js/translated/company.js:1128
msgid "Delete Manufacturer Parts"
msgstr ""
-#: templates/js/translated/company.js:1161
+#: templates/js/translated/company.js:1162
msgid "All selected parameters will be deleted"
msgstr ""
-#: templates/js/translated/company.js:1175
+#: templates/js/translated/company.js:1176
msgid "Delete Parameters"
msgstr ""
-#: templates/js/translated/company.js:1191
-#: templates/js/translated/company.js:1479 templates/js/translated/part.js:2250
+#: templates/js/translated/company.js:1192
+#: templates/js/translated/company.js:1480 templates/js/translated/part.js:2250
msgid "Order parts"
msgstr ""
-#: templates/js/translated/company.js:1208
+#: templates/js/translated/company.js:1209
msgid "Delete manufacturer parts"
msgstr ""
-#: templates/js/translated/company.js:1240
+#: templates/js/translated/company.js:1241
msgid "Manufacturer part actions"
msgstr ""
-#: templates/js/translated/company.js:1259
+#: templates/js/translated/company.js:1260
msgid "No manufacturer parts found"
msgstr ""
-#: templates/js/translated/company.js:1279
-#: templates/js/translated/company.js:1567 templates/js/translated/part.js:801
+#: templates/js/translated/company.js:1280
+#: templates/js/translated/company.js:1568 templates/js/translated/part.js:801
#: templates/js/translated/part.js:1217
msgid "Template part"
msgstr ""
-#: templates/js/translated/company.js:1283
-#: templates/js/translated/company.js:1571 templates/js/translated/part.js:805
+#: templates/js/translated/company.js:1284
+#: templates/js/translated/company.js:1572 templates/js/translated/part.js:805
#: templates/js/translated/part.js:1221
msgid "Assembled part"
msgstr ""
-#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1471
+#: templates/js/translated/company.js:1404 templates/js/translated/part.js:1471
msgid "No parameters found"
msgstr ""
-#: templates/js/translated/company.js:1438 templates/js/translated/part.js:1534
+#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1534
msgid "Edit parameter"
msgstr ""
-#: templates/js/translated/company.js:1439 templates/js/translated/part.js:1535
+#: templates/js/translated/company.js:1440 templates/js/translated/part.js:1535
msgid "Delete parameter"
msgstr ""
-#: templates/js/translated/company.js:1456 templates/js/translated/part.js:1440
+#: templates/js/translated/company.js:1457 templates/js/translated/part.js:1440
msgid "Edit Parameter"
msgstr ""
-#: templates/js/translated/company.js:1465 templates/js/translated/part.js:1556
+#: templates/js/translated/company.js:1466 templates/js/translated/part.js:1556
msgid "Delete Parameter"
msgstr ""
-#: templates/js/translated/company.js:1496
+#: templates/js/translated/company.js:1497
msgid "Delete supplier parts"
msgstr ""
-#: templates/js/translated/company.js:1546
+#: templates/js/translated/company.js:1547
msgid "No supplier parts found"
msgstr ""
-#: templates/js/translated/company.js:1664
+#: templates/js/translated/company.js:1665
msgid "Base Units"
msgstr ""
-#: templates/js/translated/company.js:1694
+#: templates/js/translated/company.js:1695
msgid "Availability"
msgstr ""
-#: templates/js/translated/company.js:1725
+#: templates/js/translated/company.js:1726
msgid "Edit supplier part"
msgstr ""
-#: templates/js/translated/company.js:1726
+#: templates/js/translated/company.js:1727
msgid "Delete supplier part"
msgstr ""
-#: templates/js/translated/company.js:1779
+#: templates/js/translated/company.js:1780
#: templates/js/translated/pricing.js:694
msgid "Delete Price Break"
msgstr ""
-#: templates/js/translated/company.js:1789
+#: templates/js/translated/company.js:1790
#: templates/js/translated/pricing.js:712
msgid "Edit Price Break"
msgstr ""
-#: templates/js/translated/company.js:1804
+#: templates/js/translated/company.js:1805
msgid "No price break information found"
msgstr ""
-#: templates/js/translated/company.js:1833
+#: templates/js/translated/company.js:1834
msgid "Last updated"
msgstr ""
-#: templates/js/translated/company.js:1840
+#: templates/js/translated/company.js:1841
msgid "Edit price break"
msgstr ""
-#: templates/js/translated/company.js:1841
+#: templates/js/translated/company.js:1842
msgid "Delete price break"
msgstr ""
@@ -12977,19 +13342,19 @@ msgstr ""
msgid "Select Columns"
msgstr ""
-#: templates/js/translated/helpers.js:80
+#: templates/js/translated/helpers.js:81
msgid "YES"
msgstr ""
-#: templates/js/translated/helpers.js:83
+#: templates/js/translated/helpers.js:84
msgid "NO"
msgstr ""
-#: templates/js/translated/helpers.js:96
+#: templates/js/translated/helpers.js:97
msgid "True"
msgstr ""
-#: templates/js/translated/helpers.js:97
+#: templates/js/translated/helpers.js:98
msgid "False"
msgstr ""
@@ -13131,7 +13496,7 @@ msgid "Delete Line"
msgstr ""
#: templates/js/translated/order.js:306
-#: templates/js/translated/purchase_order.js:2060
+#: templates/js/translated/purchase_order.js:2044
msgid "No line items found"
msgstr ""
@@ -13166,7 +13531,7 @@ msgstr ""
#: templates/js/translated/part.js:334 templates/js/translated/stock.js:147
#: templates/js/translated/stock.js:182
msgid "Icon (optional) - Explore all available icons on"
-msgstr ""
+msgstr "Pictogram (optioneel) - Ontdek alle beschikbare pictogrammen op"
#: templates/js/translated/part.js:355
msgid "Create Part Category"
@@ -13242,7 +13607,7 @@ msgstr ""
#: templates/js/translated/part.js:551
msgid "Any stock items for this part will be deleted"
-msgstr ""
+msgstr "Alle voorraadartikelen voor dit onderdeel worden verwijderd"
#: templates/js/translated/part.js:552
msgid "This part will be removed from any Bills of Material"
@@ -13274,7 +13639,7 @@ msgstr ""
#: templates/js/translated/part.js:622
msgid "Validating the BOM will mark each line item as valid"
-msgstr ""
+msgstr "Het valideren van de stuklijst BOM zal elk regelitem als geldig markeren"
#: templates/js/translated/part.js:632
msgid "Validate Bill of Materials"
@@ -13291,11 +13656,11 @@ msgstr ""
#: templates/js/translated/part.js:688
#: templates/js/translated/table_filters.js:755
msgid "Low stock"
-msgstr ""
+msgstr "Lage voorraad"
#: templates/js/translated/part.js:691
msgid "No stock available"
-msgstr ""
+msgstr "Geen voorraad beschikbaar"
#: templates/js/translated/part.js:751
msgid "Demand"
@@ -13319,31 +13684,31 @@ msgstr ""
#: templates/js/translated/part.js:896
msgid "Schedule generation of a new stocktake report."
-msgstr ""
+msgstr "Plan het genereren van een nieuw voorraad verslag."
#: templates/js/translated/part.js:896
msgid "Once complete, the stocktake report will be available for download."
-msgstr ""
+msgstr "Eenmaal voltooid, zal het voorraadrapport beschikbaar zijn om te downloaden."
#: templates/js/translated/part.js:904
msgid "Generate Stocktake Report"
-msgstr ""
+msgstr "Voorraadcontrole rapport genereren"
#: templates/js/translated/part.js:908
msgid "Stocktake report scheduled"
-msgstr ""
+msgstr "Voorraadcontrole verslag gepland"
#: templates/js/translated/part.js:1057
msgid "No stocktake information available"
-msgstr ""
+msgstr "Geen voorraadinformatie beschikbaar"
#: templates/js/translated/part.js:1115 templates/js/translated/part.js:1151
msgid "Edit Stocktake Entry"
-msgstr ""
+msgstr "Invoer voorraadopname bewerken"
#: templates/js/translated/part.js:1119 templates/js/translated/part.js:1161
msgid "Delete Stocktake Entry"
-msgstr ""
+msgstr "Voorraad invoer verwijderen"
#: templates/js/translated/part.js:1288
msgid "No variants found"
@@ -13366,19 +13731,19 @@ msgid "Delete Part Parameter Template"
msgstr ""
#: templates/js/translated/part.js:1723
-#: templates/js/translated/purchase_order.js:1724
+#: templates/js/translated/purchase_order.js:1708
msgid "No purchase orders found"
msgstr ""
#: templates/js/translated/part.js:1867
-#: templates/js/translated/purchase_order.js:2223
+#: templates/js/translated/purchase_order.js:2207
#: templates/js/translated/return_order.js:754
-#: templates/js/translated/sales_order.js:1911
+#: templates/js/translated/sales_order.js:1892
msgid "This line item is overdue"
msgstr ""
#: templates/js/translated/part.js:1913
-#: templates/js/translated/purchase_order.js:2290
+#: templates/js/translated/purchase_order.js:2274
msgid "Receive line item"
msgstr ""
@@ -13419,9 +13784,9 @@ msgid "No category"
msgstr ""
#: templates/js/translated/part.js:2550 templates/js/translated/part.js:2680
-#: templates/js/translated/stock.js:2754
+#: templates/js/translated/stock.js:2755
msgid "Display as list"
-msgstr ""
+msgstr "Weergeven als lijst"
#: templates/js/translated/part.js:2566
msgid "Display as grid"
@@ -13431,9 +13796,9 @@ msgstr ""
msgid "No subcategories found"
msgstr ""
-#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2774
+#: templates/js/translated/part.js:2700 templates/js/translated/stock.js:2775
msgid "Display as tree"
-msgstr ""
+msgstr "Weergeven als structuur"
#: templates/js/translated/part.js:2780
msgid "Load Subcategories"
@@ -13483,25 +13848,25 @@ msgstr ""
msgid "Speculative"
msgstr ""
-#: templates/js/translated/part.js:3128
+#: templates/js/translated/part.js:3144
msgid "No scheduling information available for this part"
msgstr ""
-#: templates/js/translated/part.js:3134
+#: templates/js/translated/part.js:3150
msgid "Error fetching scheduling information for this part"
msgstr ""
-#: templates/js/translated/part.js:3230
-msgid "Scheduled Stock Quantities"
-msgstr ""
-
#: templates/js/translated/part.js:3246
+msgid "Scheduled Stock Quantities"
+msgstr "Geplande voorraad hoeveelheid"
+
+#: templates/js/translated/part.js:3262
msgid "Maximum Quantity"
msgstr ""
-#: templates/js/translated/part.js:3291
+#: templates/js/translated/part.js:3307
msgid "Minimum Stock Level"
-msgstr ""
+msgstr "Minimum voorraad niveau"
#: templates/js/translated/plugin.js:46
msgid "No plugins found"
@@ -13557,7 +13922,7 @@ msgstr ""
#: templates/js/translated/pricing.js:321
msgid "No BOM data available"
-msgstr ""
+msgstr "Geen stuklijst BOM gegevens beschikbaar"
#: templates/js/translated/pricing.js:463
msgid "No supplier pricing data available"
@@ -13575,267 +13940,243 @@ msgstr ""
msgid "Purchase Price History"
msgstr ""
-#: templates/js/translated/pricing.js:894
+#: templates/js/translated/pricing.js:892
msgid "No sales history data available"
msgstr ""
-#: templates/js/translated/pricing.js:916
+#: templates/js/translated/pricing.js:914
msgid "Sale Price History"
msgstr ""
-#: templates/js/translated/pricing.js:1005
+#: templates/js/translated/pricing.js:1003
msgid "No variant data available"
msgstr ""
-#: templates/js/translated/pricing.js:1045
+#: templates/js/translated/pricing.js:1043
msgid "Variant Part"
msgstr ""
-#: templates/js/translated/purchase_order.js:169
-msgid "Select purchase order to duplicate"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:176
-msgid "Duplicate Line Items"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:177
-msgid "Duplicate all line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:184
-msgid "Duplicate Extra Lines"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:185
-msgid "Duplicate extra line items from the selected order"
-msgstr ""
-
-#: templates/js/translated/purchase_order.js:206
+#: templates/js/translated/purchase_order.js:188
msgid "Edit Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:223
+#: templates/js/translated/purchase_order.js:205
msgid "Duplication Options"
msgstr ""
-#: templates/js/translated/purchase_order.js:431
+#: templates/js/translated/purchase_order.js:414
msgid "Complete Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:448
+#: templates/js/translated/purchase_order.js:431
#: templates/js/translated/return_order.js:210
-#: templates/js/translated/sales_order.js:552
+#: templates/js/translated/sales_order.js:511
msgid "Mark this order as complete?"
msgstr ""
-#: templates/js/translated/purchase_order.js:454
+#: templates/js/translated/purchase_order.js:437
msgid "All line items have been received"
msgstr ""
-#: templates/js/translated/purchase_order.js:459
+#: templates/js/translated/purchase_order.js:442
msgid "This order has line items which have not been marked as received."
msgstr ""
-#: templates/js/translated/purchase_order.js:460
+#: templates/js/translated/purchase_order.js:443
msgid "Completing this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:483
+#: templates/js/translated/purchase_order.js:466
msgid "Cancel Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:488
+#: templates/js/translated/purchase_order.js:471
msgid "Are you sure you wish to cancel this purchase order?"
msgstr ""
-#: templates/js/translated/purchase_order.js:494
+#: templates/js/translated/purchase_order.js:477
msgid "This purchase order can not be cancelled"
msgstr ""
-#: templates/js/translated/purchase_order.js:515
+#: templates/js/translated/purchase_order.js:498
#: templates/js/translated/return_order.js:164
msgid "After placing this order, line items will no longer be editable."
msgstr ""
-#: templates/js/translated/purchase_order.js:520
+#: templates/js/translated/purchase_order.js:503
msgid "Issue Purchase Order"
msgstr ""
-#: templates/js/translated/purchase_order.js:612
+#: templates/js/translated/purchase_order.js:595
msgid "At least one purchaseable part must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:637
+#: templates/js/translated/purchase_order.js:620
msgid "Quantity to order"
msgstr ""
-#: templates/js/translated/purchase_order.js:646
+#: templates/js/translated/purchase_order.js:629
msgid "New supplier part"
msgstr ""
-#: templates/js/translated/purchase_order.js:664
+#: templates/js/translated/purchase_order.js:647
msgid "New purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:705
+#: templates/js/translated/purchase_order.js:688
msgid "Add to purchase order"
msgstr ""
-#: templates/js/translated/purchase_order.js:755
+#: templates/js/translated/purchase_order.js:738
msgid "Merge"
msgstr ""
-#: templates/js/translated/purchase_order.js:859
+#: templates/js/translated/purchase_order.js:842
msgid "No matching supplier parts"
msgstr ""
-#: templates/js/translated/purchase_order.js:878
+#: templates/js/translated/purchase_order.js:861
msgid "No matching purchase orders"
msgstr ""
-#: templates/js/translated/purchase_order.js:1073
+#: templates/js/translated/purchase_order.js:1056
#: templates/js/translated/return_order.js:490
msgid "Select Line Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1074
+#: templates/js/translated/purchase_order.js:1057
#: templates/js/translated/return_order.js:491
msgid "At least one line item must be selected"
msgstr ""
-#: templates/js/translated/purchase_order.js:1104
+#: templates/js/translated/purchase_order.js:1087
msgid "Received Quantity"
msgstr ""
-#: templates/js/translated/purchase_order.js:1115
+#: templates/js/translated/purchase_order.js:1098
msgid "Quantity to receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1170
+#: templates/js/translated/purchase_order.js:1153
#: templates/js/translated/stock.js:1215
msgid "Specify packaging for incoming stock items"
-msgstr ""
+msgstr "Specificeer verpakking voor inkomende voorraaditems"
-#: templates/js/translated/purchase_order.js:1223
+#: templates/js/translated/purchase_order.js:1206
msgid "Stock Status"
-msgstr ""
+msgstr "Voorraad staat"
-#: templates/js/translated/purchase_order.js:1237
+#: templates/js/translated/purchase_order.js:1220
msgid "Add barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1238
+#: templates/js/translated/purchase_order.js:1221
msgid "Remove barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1241
+#: templates/js/translated/purchase_order.js:1224
msgid "Specify location"
msgstr ""
-#: templates/js/translated/purchase_order.js:1249
+#: templates/js/translated/purchase_order.js:1232
msgid "Add batch code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1259
+#: templates/js/translated/purchase_order.js:1242
msgid "Specify packaging"
msgstr ""
-#: templates/js/translated/purchase_order.js:1270
+#: templates/js/translated/purchase_order.js:1253
msgid "Add serial numbers"
msgstr ""
-#: templates/js/translated/purchase_order.js:1281
+#: templates/js/translated/purchase_order.js:1264
msgid "Add note"
msgstr ""
-#: templates/js/translated/purchase_order.js:1338
+#: templates/js/translated/purchase_order.js:1321
msgid "Serials"
msgstr ""
-#: templates/js/translated/purchase_order.js:1368
+#: templates/js/translated/purchase_order.js:1351
msgid "Order Code"
msgstr ""
-#: templates/js/translated/purchase_order.js:1370
+#: templates/js/translated/purchase_order.js:1353
msgid "Quantity to Receive"
msgstr ""
-#: templates/js/translated/purchase_order.js:1395
+#: templates/js/translated/purchase_order.js:1379
#: templates/js/translated/return_order.js:559
msgid "Confirm receipt of items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1396
+#: templates/js/translated/purchase_order.js:1380
msgid "Receive Purchase Order Items"
msgstr ""
-#: templates/js/translated/purchase_order.js:1464
+#: templates/js/translated/purchase_order.js:1448
msgid "Scan Item Barcode"
msgstr ""
-#: templates/js/translated/purchase_order.js:1465
+#: templates/js/translated/purchase_order.js:1449
msgid "Scan barcode on incoming item (must not match any existing stock items)"
-msgstr ""
+msgstr "Scan de streepjescode op het inkomende item (mag niet overeenkomen met bestaande voorraadartikelen)"
-#: templates/js/translated/purchase_order.js:1479
+#: templates/js/translated/purchase_order.js:1463
msgid "Invalid barcode data"
msgstr ""
-#: templates/js/translated/purchase_order.js:1751
+#: templates/js/translated/purchase_order.js:1735
#: templates/js/translated/return_order.js:285
-#: templates/js/translated/sales_order.js:810
-#: templates/js/translated/sales_order.js:1034
+#: templates/js/translated/sales_order.js:769
+#: templates/js/translated/sales_order.js:1007
msgid "Order is overdue"
msgstr ""
-#: templates/js/translated/purchase_order.js:1913
+#: templates/js/translated/purchase_order.js:1897
msgid "All selected Line items will be deleted"
msgstr ""
-#: templates/js/translated/purchase_order.js:1931
+#: templates/js/translated/purchase_order.js:1915
msgid "Delete selected Line items?"
msgstr ""
-#: templates/js/translated/purchase_order.js:1986
-#: templates/js/translated/sales_order.js:2106
+#: templates/js/translated/purchase_order.js:1970
+#: templates/js/translated/sales_order.js:2087
msgid "Duplicate Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2001
+#: templates/js/translated/purchase_order.js:1985
#: templates/js/translated/return_order.js:475
#: templates/js/translated/return_order.js:667
-#: templates/js/translated/sales_order.js:2119
+#: templates/js/translated/sales_order.js:2100
msgid "Edit Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2012
+#: templates/js/translated/purchase_order.js:1996
#: templates/js/translated/return_order.js:680
-#: templates/js/translated/sales_order.js:2130
+#: templates/js/translated/sales_order.js:2111
msgid "Delete Line Item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2294
-#: templates/js/translated/sales_order.js:2060
+#: templates/js/translated/purchase_order.js:2278
+#: templates/js/translated/sales_order.js:2041
msgid "Duplicate line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2295
+#: templates/js/translated/purchase_order.js:2279
#: templates/js/translated/return_order.js:799
-#: templates/js/translated/sales_order.js:2061
+#: templates/js/translated/sales_order.js:2042
msgid "Edit line item"
msgstr ""
-#: templates/js/translated/purchase_order.js:2296
+#: templates/js/translated/purchase_order.js:2280
#: templates/js/translated/return_order.js:803
-#: templates/js/translated/sales_order.js:2067
+#: templates/js/translated/sales_order.js:2048
msgid "Delete line item"
msgstr ""
-#: templates/js/translated/report.js:49
-msgid "Print Report"
-msgstr ""
-
#: templates/js/translated/report.js:68
msgid "Report print successful"
msgstr ""
@@ -13878,7 +14219,7 @@ msgid "No return orders found"
msgstr ""
#: templates/js/translated/return_order.js:299
-#: templates/js/translated/sales_order.js:824
+#: templates/js/translated/sales_order.js:783
msgid "Invalid Customer"
msgstr ""
@@ -13887,7 +14228,7 @@ msgid "Receive Return Order Items"
msgstr ""
#: templates/js/translated/return_order.js:691
-#: templates/js/translated/sales_order.js:2267
+#: templates/js/translated/sales_order.js:2248
msgid "No matching line items"
msgstr ""
@@ -13903,188 +14244,181 @@ msgstr ""
msgid "Edit Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:291
+#: templates/js/translated/sales_order.js:288
msgid "No stock items have been allocated to this shipment"
-msgstr ""
+msgstr "Er zijn geen voorraadartikelen toegewezen aan deze zending"
-#: templates/js/translated/sales_order.js:296
-msgid "The following stock items will be shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:336
+#: templates/js/translated/sales_order.js:294
msgid "Complete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:360
+#: templates/js/translated/sales_order.js:318
msgid "Confirm Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:416
+#: templates/js/translated/sales_order.js:375
msgid "No pending shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:420
+#: templates/js/translated/sales_order.js:379
msgid "No stock items have been allocated to pending shipments"
-msgstr ""
+msgstr "Geen voorraadartikelen toegewezen aan lopende verzendingen"
-#: templates/js/translated/sales_order.js:430
+#: templates/js/translated/sales_order.js:389
msgid "Complete Shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:452
+#: templates/js/translated/sales_order.js:411
msgid "Skip"
msgstr ""
-#: templates/js/translated/sales_order.js:484
+#: templates/js/translated/sales_order.js:443
msgid "Ship Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:500
+#: templates/js/translated/sales_order.js:459
msgid "Ship this order?"
msgstr ""
-#: templates/js/translated/sales_order.js:506
+#: templates/js/translated/sales_order.js:465
msgid "Order cannot be shipped as there are incomplete shipments"
msgstr ""
-#: templates/js/translated/sales_order.js:513
+#: templates/js/translated/sales_order.js:472
msgid "This order has line items which have not been completed."
msgstr ""
-#: templates/js/translated/sales_order.js:514
+#: templates/js/translated/sales_order.js:473
msgid "Shipping this order means that the order and line items will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:572
+#: templates/js/translated/sales_order.js:531
msgid "Issue this Sales Order?"
msgstr ""
-#: templates/js/translated/sales_order.js:577
+#: templates/js/translated/sales_order.js:536
msgid "Issue Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:596
+#: templates/js/translated/sales_order.js:555
msgid "Cancel Sales Order"
msgstr ""
-#: templates/js/translated/sales_order.js:601
+#: templates/js/translated/sales_order.js:560
msgid "Cancelling this order means that the order will no longer be editable."
msgstr ""
-#: templates/js/translated/sales_order.js:655
+#: templates/js/translated/sales_order.js:614
msgid "Create New Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:723
msgid "No sales orders found"
msgstr ""
-#: templates/js/translated/sales_order.js:944
+#: templates/js/translated/sales_order.js:907
msgid "Edit shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:947
+#: templates/js/translated/sales_order.js:910
msgid "Complete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:952
+#: templates/js/translated/sales_order.js:915
msgid "Delete shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:969
+#: templates/js/translated/sales_order.js:932
msgid "Edit Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:984
+#: templates/js/translated/sales_order.js:947
msgid "Delete Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1017
+#: templates/js/translated/sales_order.js:989
msgid "No matching shipments found"
msgstr ""
-#: templates/js/translated/sales_order.js:1042
+#: templates/js/translated/sales_order.js:1015
msgid "Shipment Reference"
msgstr ""
-#: templates/js/translated/sales_order.js:1066
-#: templates/js/translated/sales_order.js:1565
+#: templates/js/translated/sales_order.js:1032
+#: templates/js/translated/sales_order.js:1531
msgid "Not shipped"
msgstr ""
-#: templates/js/translated/sales_order.js:1084
+#: templates/js/translated/sales_order.js:1050
msgid "Tracking"
msgstr ""
-#: templates/js/translated/sales_order.js:1088
+#: templates/js/translated/sales_order.js:1054
msgid "Invoice"
msgstr ""
-#: templates/js/translated/sales_order.js:1255
+#: templates/js/translated/sales_order.js:1221
msgid "Add Shipment"
msgstr ""
-#: templates/js/translated/sales_order.js:1306
+#: templates/js/translated/sales_order.js:1272
msgid "Confirm stock allocation"
-msgstr ""
+msgstr "Voorraadtoewijzing bevestigen"
-#: templates/js/translated/sales_order.js:1307
+#: templates/js/translated/sales_order.js:1273
msgid "Allocate Stock Items to Sales Order"
-msgstr ""
+msgstr "Voorraad artikelen toewijzen aan verkooporder"
-#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1479
msgid "No sales order allocations found"
msgstr ""
-#: templates/js/translated/sales_order.js:1605
+#: templates/js/translated/sales_order.js:1571
msgid "Edit Stock Allocation"
-msgstr ""
+msgstr "Bewerk voorraadtoewijzing"
-#: templates/js/translated/sales_order.js:1619
+#: templates/js/translated/sales_order.js:1585
msgid "Confirm Delete Operation"
msgstr ""
-#: templates/js/translated/sales_order.js:1620
+#: templates/js/translated/sales_order.js:1586
msgid "Delete Stock Allocation"
-msgstr ""
+msgstr "Verwijder voorraadtoewijzing"
-#: templates/js/translated/sales_order.js:1659
-#: templates/js/translated/sales_order.js:1746
+#: templates/js/translated/sales_order.js:1640
+#: templates/js/translated/sales_order.js:1727
#: templates/js/translated/stock.js:1861
msgid "Shipped to customer"
-msgstr ""
+msgstr "Verzonden naar klant"
-#: templates/js/translated/sales_order.js:1667
-#: templates/js/translated/sales_order.js:1755
+#: templates/js/translated/sales_order.js:1648
+#: templates/js/translated/sales_order.js:1736
msgid "Stock location not specified"
-msgstr ""
+msgstr "Voorraadlocatie niet opgegeven"
-#: templates/js/translated/sales_order.js:2044
-msgid "Allocate serial numbers"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2048
-msgid "Purchase stock"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2057
-#: templates/js/translated/sales_order.js:2245
-msgid "Calculate price"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2071
-msgid "Cannot be deleted as items have been shipped"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2074
-msgid "Cannot be deleted as items have been allocated"
-msgstr ""
-
-#: templates/js/translated/sales_order.js:2145
+#: templates/js/translated/sales_order.js:2025
+#: templates/js/translated/sales_order.js:2126
msgid "Allocate Serial Numbers"
msgstr ""
-#: templates/js/translated/sales_order.js:2253
+#: templates/js/translated/sales_order.js:2029
+msgid "Purchase stock"
+msgstr "Voorraad kopen"
+
+#: templates/js/translated/sales_order.js:2038
+#: templates/js/translated/sales_order.js:2226
+msgid "Calculate price"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2052
+msgid "Cannot be deleted as items have been shipped"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2055
+msgid "Cannot be deleted as items have been allocated"
+msgstr ""
+
+#: templates/js/translated/sales_order.js:2234
msgid "Update Unit Price"
msgstr ""
@@ -14110,87 +14444,87 @@ msgstr ""
#: templates/js/translated/stock.js:106
msgid "Serialize Stock Item"
-msgstr ""
+msgstr "Voorraadartikel serialiseren"
#: templates/js/translated/stock.js:137
msgid "Confirm Stock Serialization"
-msgstr ""
+msgstr "Bevestig voorraad serialisatie"
#: templates/js/translated/stock.js:173
msgid "Add Location type"
-msgstr ""
+msgstr "Voeg locatie type toe"
#: templates/js/translated/stock.js:209
msgid "Edit Stock Location"
-msgstr ""
+msgstr "Voorraad locatie bewerken"
#: templates/js/translated/stock.js:224
msgid "New Stock Location"
-msgstr ""
+msgstr "Nieuwe voorraad locatie"
#: templates/js/translated/stock.js:226
msgid "Create another location after this one"
-msgstr ""
+msgstr "Een andere locatie aanmaken na deze"
#: templates/js/translated/stock.js:227
msgid "Stock location created"
-msgstr ""
+msgstr "Voorraadlocatie aangemaakt"
#: templates/js/translated/stock.js:241
msgid "Are you sure you want to delete this stock location?"
-msgstr ""
+msgstr "Weet u zeker dat u deze voorraadlocatie wilt verwijderen?"
#: templates/js/translated/stock.js:248
msgid "Move to parent stock location"
-msgstr ""
+msgstr "Verplaats naar bovenliggende standaard locatie"
#: templates/js/translated/stock.js:257
msgid "Delete Stock Location"
-msgstr ""
+msgstr "Voorraad locatie verwijderen"
#: templates/js/translated/stock.js:261
msgid "Action for stock items in this stock location"
-msgstr ""
+msgstr "Actie voor voorraad artikelen op deze voorraadlocatie"
#: templates/js/translated/stock.js:266
msgid "Action for sub-locations"
-msgstr ""
+msgstr "Actie voor deellocaties"
#: templates/js/translated/stock.js:320
msgid "This part cannot be serialized"
-msgstr ""
+msgstr "Dit onderdeel kan niet geserialiseerd worden"
#: templates/js/translated/stock.js:356
msgid "Add given quantity as packs instead of individual items"
-msgstr ""
+msgstr "Opgegeven hoeveelheid als pakket toevoegen in plaats van individuele artikelen"
#: templates/js/translated/stock.js:368
msgid "Enter initial quantity for this stock item"
-msgstr ""
+msgstr "Voer het initiële aantal in voor dit voorraaditem"
#: templates/js/translated/stock.js:374
msgid "Enter serial numbers for new stock (or leave blank)"
-msgstr ""
+msgstr "Voer serienummer in voor nieuwe voorraad (of laat het leeg)"
#: templates/js/translated/stock.js:445
msgid "Stock item duplicated"
-msgstr ""
+msgstr "Voorraad item gedupliceerd"
#: templates/js/translated/stock.js:465
msgid "Duplicate Stock Item"
-msgstr ""
+msgstr "Artikel dupliceren"
#: templates/js/translated/stock.js:481
msgid "Are you sure you want to delete this stock item?"
-msgstr ""
+msgstr "Weet u zeker dat u dit product wilt verwijderen?"
#: templates/js/translated/stock.js:486
msgid "Delete Stock Item"
-msgstr ""
+msgstr "Voorraad item verwijderen"
#: templates/js/translated/stock.js:507
msgid "Edit Stock Item"
-msgstr ""
+msgstr "Voorraad item bewerken"
#: templates/js/translated/stock.js:549
msgid "Create another item after this one"
@@ -14209,11 +14543,8 @@ msgid "Find Serial Number"
msgstr ""
#: templates/js/translated/stock.js:603 templates/js/translated/stock.js:604
-msgid "Enter serial number"
-msgstr ""
-
#: templates/js/translated/stock.js:620
-msgid "Enter a serial number"
+msgid "Enter serial number"
msgstr ""
#: templates/js/translated/stock.js:640
@@ -14284,7 +14615,7 @@ msgstr ""
msgid "Add Stock"
msgstr ""
-#: templates/js/translated/stock.js:1049 users/models.py:396
+#: templates/js/translated/stock.js:1049 users/models.py:398
msgid "Add"
msgstr ""
@@ -14308,7 +14639,7 @@ msgstr ""
msgid "Adjust packaging"
msgstr ""
-#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3382
+#: templates/js/translated/stock.js:1256 templates/js/translated/stock.js:3383
msgid "Select Stock Items"
msgstr ""
@@ -14320,18 +14651,6 @@ msgstr ""
msgid "Confirm stock adjustment"
msgstr ""
-#: templates/js/translated/stock.js:1448
-msgid "PASS"
-msgstr ""
-
-#: templates/js/translated/stock.js:1450
-msgid "FAIL"
-msgstr ""
-
-#: templates/js/translated/stock.js:1455
-msgid "NO RESULT"
-msgstr ""
-
#: templates/js/translated/stock.js:1535
msgid "Pass test"
msgstr ""
@@ -14388,216 +14707,216 @@ msgstr ""
msgid "No stock location set"
msgstr ""
-#: templates/js/translated/stock.js:1927
+#: templates/js/translated/stock.js:1928
msgid "Change stock status"
msgstr ""
-#: templates/js/translated/stock.js:1936
+#: templates/js/translated/stock.js:1937
msgid "Merge stock"
msgstr ""
-#: templates/js/translated/stock.js:1985
+#: templates/js/translated/stock.js:1986
msgid "Delete stock"
msgstr ""
-#: templates/js/translated/stock.js:2038
+#: templates/js/translated/stock.js:2039
msgid "stock items"
msgstr ""
-#: templates/js/translated/stock.js:2043
+#: templates/js/translated/stock.js:2044
msgid "Scan to location"
msgstr ""
-#: templates/js/translated/stock.js:2054
+#: templates/js/translated/stock.js:2055
msgid "Stock Actions"
msgstr ""
-#: templates/js/translated/stock.js:2098
+#: templates/js/translated/stock.js:2099
msgid "Load installed items"
msgstr ""
-#: templates/js/translated/stock.js:2176
+#: templates/js/translated/stock.js:2177
msgid "Stock item is in production"
msgstr ""
-#: templates/js/translated/stock.js:2181
+#: templates/js/translated/stock.js:2182
msgid "Stock item assigned to sales order"
msgstr ""
-#: templates/js/translated/stock.js:2184
+#: templates/js/translated/stock.js:2185
msgid "Stock item assigned to customer"
msgstr ""
-#: templates/js/translated/stock.js:2187
+#: templates/js/translated/stock.js:2188
msgid "Serialized stock item has been allocated"
msgstr ""
-#: templates/js/translated/stock.js:2189
+#: templates/js/translated/stock.js:2190
msgid "Stock item has been fully allocated"
msgstr ""
-#: templates/js/translated/stock.js:2191
+#: templates/js/translated/stock.js:2192
msgid "Stock item has been partially allocated"
msgstr ""
-#: templates/js/translated/stock.js:2194
+#: templates/js/translated/stock.js:2195
msgid "Stock item has been installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:2196
+#: templates/js/translated/stock.js:2197
msgid "Stock item has been consumed by a build order"
msgstr ""
-#: templates/js/translated/stock.js:2200
+#: templates/js/translated/stock.js:2201
msgid "Stock item has expired"
msgstr ""
-#: templates/js/translated/stock.js:2202
+#: templates/js/translated/stock.js:2203
msgid "Stock item will expire soon"
msgstr ""
-#: templates/js/translated/stock.js:2207
+#: templates/js/translated/stock.js:2208
msgid "Stock item has been rejected"
msgstr ""
-#: templates/js/translated/stock.js:2209
+#: templates/js/translated/stock.js:2210
msgid "Stock item is lost"
msgstr ""
-#: templates/js/translated/stock.js:2211
+#: templates/js/translated/stock.js:2212
msgid "Stock item is destroyed"
msgstr ""
-#: templates/js/translated/stock.js:2215
+#: templates/js/translated/stock.js:2216
#: templates/js/translated/table_filters.js:357
msgid "Depleted"
msgstr ""
-#: templates/js/translated/stock.js:2380
+#: templates/js/translated/stock.js:2381
msgid "Supplier part not specified"
msgstr ""
-#: templates/js/translated/stock.js:2427
+#: templates/js/translated/stock.js:2428
msgid "Stock Value"
msgstr ""
-#: templates/js/translated/stock.js:2555
+#: templates/js/translated/stock.js:2556
msgid "No stock items matching query"
msgstr ""
-#: templates/js/translated/stock.js:2658
+#: templates/js/translated/stock.js:2659
msgid "stock locations"
msgstr ""
-#: templates/js/translated/stock.js:2813
+#: templates/js/translated/stock.js:2814
msgid "Load Sublocations"
msgstr ""
-#: templates/js/translated/stock.js:2930
+#: templates/js/translated/stock.js:2931
msgid "Details"
msgstr ""
-#: templates/js/translated/stock.js:2934
+#: templates/js/translated/stock.js:2935
msgid "No changes"
msgstr ""
-#: templates/js/translated/stock.js:2946
+#: templates/js/translated/stock.js:2947
msgid "Part information unavailable"
msgstr ""
-#: templates/js/translated/stock.js:2968
+#: templates/js/translated/stock.js:2969
msgid "Location no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:2985
+#: templates/js/translated/stock.js:2986
msgid "Build order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3000
+#: templates/js/translated/stock.js:3001
msgid "Purchase order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3017
+#: templates/js/translated/stock.js:3018
msgid "Sales Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3034
+#: templates/js/translated/stock.js:3035
msgid "Return Order no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3053
+#: templates/js/translated/stock.js:3054
msgid "Customer no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3071
+#: templates/js/translated/stock.js:3072
msgid "Stock item no longer exists"
msgstr ""
-#: templates/js/translated/stock.js:3089
+#: templates/js/translated/stock.js:3090
msgid "Added"
msgstr ""
-#: templates/js/translated/stock.js:3097
+#: templates/js/translated/stock.js:3098
msgid "Removed"
msgstr ""
-#: templates/js/translated/stock.js:3169
+#: templates/js/translated/stock.js:3170
msgid "No installed items"
msgstr ""
-#: templates/js/translated/stock.js:3223 templates/js/translated/stock.js:3259
+#: templates/js/translated/stock.js:3224 templates/js/translated/stock.js:3260
msgid "Uninstall Stock Item"
msgstr ""
-#: templates/js/translated/stock.js:3280
+#: templates/js/translated/stock.js:3281
msgid "Select stock item to uninstall"
msgstr ""
-#: templates/js/translated/stock.js:3301
+#: templates/js/translated/stock.js:3302
msgid "Install another stock item into this item"
msgstr ""
-#: templates/js/translated/stock.js:3302
+#: templates/js/translated/stock.js:3303
msgid "Stock items can only be installed if they meet the following criteria"
msgstr ""
-#: templates/js/translated/stock.js:3304
-msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
-msgstr ""
-
#: templates/js/translated/stock.js:3305
+msgid "The Stock Item links to a Part which is the BOM for this Stock Item"
+msgstr "Het voorraadartikel linkt naar een onderdeel dat de stuklijst BOM is voor dit voorraadartikel"
+
+#: templates/js/translated/stock.js:3306
msgid "The Stock Item is currently available in stock"
msgstr ""
-#: templates/js/translated/stock.js:3306
+#: templates/js/translated/stock.js:3307
msgid "The Stock Item is not already installed in another item"
msgstr ""
-#: templates/js/translated/stock.js:3307
+#: templates/js/translated/stock.js:3308
msgid "The Stock Item is tracked by either a batch code or serial number"
msgstr ""
-#: templates/js/translated/stock.js:3320
+#: templates/js/translated/stock.js:3321
msgid "Select part to install"
msgstr ""
-#: templates/js/translated/stock.js:3383
+#: templates/js/translated/stock.js:3384
msgid "Select one or more stock items"
msgstr ""
-#: templates/js/translated/stock.js:3396
+#: templates/js/translated/stock.js:3397
msgid "Selected stock items"
msgstr ""
-#: templates/js/translated/stock.js:3400
+#: templates/js/translated/stock.js:3401
msgid "Change Stock Status"
msgstr ""
-#: templates/js/translated/stock.js:3477
+#: templates/js/translated/stock.js:3478
msgid "This week"
msgstr ""
-#: templates/js/translated/stock.js:3485
+#: templates/js/translated/stock.js:3486
msgid "This month"
msgstr ""
@@ -14734,10 +15053,6 @@ msgstr ""
msgid "Show items which are in production"
msgstr ""
-#: templates/js/translated/table_filters.js:372
-msgid "Include Variants"
-msgstr ""
-
#: templates/js/translated/table_filters.js:373
msgid "Include stock items for variant parts"
msgstr ""
@@ -15012,10 +15327,6 @@ msgstr ""
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"
@@ -15141,27 +15452,27 @@ msgstr ""
msgid "No"
msgstr ""
-#: users/admin.py:104
+#: users/admin.py:101
msgid "Users"
msgstr ""
-#: users/admin.py:105
+#: users/admin.py:102
msgid "Select which users are assigned to this group"
msgstr ""
-#: users/admin.py:249
+#: users/admin.py:246
msgid "The following users are members of multiple groups"
msgstr ""
-#: users/admin.py:283
+#: users/admin.py:280
msgid "Personal info"
msgstr ""
-#: users/admin.py:285
+#: users/admin.py:282
msgid "Permissions"
msgstr ""
-#: users/admin.py:288
+#: users/admin.py:285
msgid "Important dates"
msgstr ""
@@ -15205,35 +15516,35 @@ msgstr ""
msgid "Revoked"
msgstr ""
-#: users/models.py:379
+#: users/models.py:381
msgid "Permission set"
msgstr ""
-#: users/models.py:388
+#: users/models.py:390
msgid "Group"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "View"
msgstr ""
-#: users/models.py:392
+#: users/models.py:394
msgid "Permission to view items"
msgstr ""
-#: users/models.py:396
+#: users/models.py:398
msgid "Permission to add items"
msgstr ""
-#: users/models.py:400
+#: users/models.py:402
msgid "Change"
msgstr ""
-#: users/models.py:402
+#: users/models.py:404
msgid "Permissions to edit items"
msgstr ""
-#: users/models.py:408
+#: users/models.py:410
msgid "Permission to delete items"
msgstr ""
diff --git a/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po b/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po
index c409784645..6692b6d170 100644
--- a/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po
+++ b/src/backend/InvenTree/locale/no/LC_MESSAGES/django.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: inventree\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 01:22+0000\n"
-"PO-Revision-Date: 2024-08-20 19:51\n"
+"POT-Creation-Date: 2024-11-04 03:11+0000\n"
+"PO-Revision-Date: 2024-11-04 03:14\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -14,81 +14,89 @@ msgstr ""
"X-Crowdin-Project: inventree\n"
"X-Crowdin-Project-ID: 452300\n"
"X-Crowdin-Language: no\n"
-"X-Crowdin-File: /[inventree.InvenTree] l10/src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
-"X-Crowdin-File-ID: 216\n"
+"X-Crowdin-File: /src/backend/InvenTree/locale/en/LC_MESSAGES/django.po\n"
+"X-Crowdin-File-ID: 250\n"
-#: InvenTree/api.py:269
+#: InvenTree/api.py:270
msgid "API endpoint not found"
msgstr "API-endepunkt ikke funnet"
-#: InvenTree/api.py:502
+#: InvenTree/api.py:387
+msgid "Invalid items list provided"
+msgstr ""
+
+#: InvenTree/api.py:396
+msgid "Invalid filters provided"
+msgstr ""
+
+#: InvenTree/api.py:401
+msgid "No items found to delete"
+msgstr ""
+
+#: InvenTree/api.py:515
msgid "User does not have permission to view this model"
msgstr "Brukeren har ikke rettigheter til å se denne modellen"
-#: InvenTree/conversion.py:160
+#: InvenTree/conversion.py:161
#, python-brace-format
msgid "Invalid unit provided ({unit})"
msgstr "Ugyldig enhet angitt ({unit})"
-#: InvenTree/conversion.py:177
+#: InvenTree/conversion.py:178
msgid "No value provided"
msgstr "Ingen verdi angitt"
-#: InvenTree/conversion.py:204
+#: InvenTree/conversion.py:205
#, python-brace-format
msgid "Could not convert {original} to {unit}"
msgstr "Kunne ikke konvertere {original} til {unit}"
-#: InvenTree/conversion.py:206
-msgid "Invalid quantity supplied"
+#: InvenTree/conversion.py:207 InvenTree/conversion.py:221
+#: InvenTree/helpers.py:505 order/models.py:589 order/models.py:832
+msgid "Invalid quantity provided"
msgstr "Ugyldig mengde oppgitt"
-#: InvenTree/conversion.py:220
-#, python-brace-format
-msgid "Invalid quantity supplied ({exc})"
-msgstr "Ugyldig mengde oppgitt ({exc})"
-
-#: InvenTree/exceptions.py:108
+#: InvenTree/exceptions.py:104
msgid "Error details can be found in the admin panel"
msgstr "Feildetaljer kan finnes i admin-panelet"
-#: InvenTree/fields.py:136
+#: InvenTree/fields.py:135
msgid "Enter date"
msgstr "Oppgi dato"
-#: InvenTree/fields.py:205 InvenTree/models.py:929 build/serializers.py:468
-#: build/serializers.py:546 build/templates/build/sidebar.html:29
-#: company/models.py:836
+#: InvenTree/fields.py:204 InvenTree/models.py:928 build/serializers.py:512
+#: build/serializers.py:590 build/templates/build/sidebar.html:29
+#: company/models.py:833
#: company/templates/company/manufacturer_part_sidebar.html:11
#: company/templates/company/sidebar.html:37
-#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1380
+#: company/templates/company/supplier_part_sidebar.html:11 order/models.py:1397
#: order/templates/order/po_sidebar.html:11
#: order/templates/order/return_order_sidebar.html:9
#: order/templates/order/so_sidebar.html:17 part/admin.py:59
-#: part/models.py:3297 part/templates/part/part_sidebar.html:65
+#: part/models.py:3348 part/templates/part/part_sidebar.html:65
#: report/templates/report/inventree_build_order_report.html:172
-#: stock/admin.py:230 stock/models.py:2375 stock/models.py:2563
-#: stock/serializers.py:698 stock/serializers.py:856 stock/serializers.py:982
-#: stock/serializers.py:1032 stock/serializers.py:1343
-#: stock/serializers.py:1432 stock/serializers.py:1597
+#: stock/admin.py:231 stock/models.py:2494 stock/models.py:2679
+#: stock/serializers.py:725 stock/serializers.py:887 stock/serializers.py:1013
+#: stock/serializers.py:1063 stock/serializers.py:1374
+#: stock/serializers.py:1463 stock/serializers.py:1628
#: stock/templates/stock/stock_sidebar.html:25
#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265
-#: templates/js/translated/company.js:1684 templates/js/translated/order.js:372
+#: templates/js/translated/company.js:1685 templates/js/translated/order.js:372
#: templates/js/translated/part.js:1087
-#: templates/js/translated/purchase_order.js:2270
+#: templates/js/translated/purchase_order.js:2254
#: templates/js/translated/return_order.js:774
-#: templates/js/translated/sales_order.js:1103
-#: templates/js/translated/sales_order.js:2018
-#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2513
+#: templates/js/translated/sales_order.js:1069
+#: templates/js/translated/sales_order.js:1999
+#: templates/js/translated/stock.js:1621 templates/js/translated/stock.js:2514
msgid "Notes"
msgstr "Notater"
-#: InvenTree/format.py:164
+#: InvenTree/format.py:162
#, python-brace-format
msgid "Value '{name}' does not appear in pattern format"
msgstr "Verdi '{name}' vises ikke i mønsterformat"
-#: InvenTree/format.py:175
+#: InvenTree/format.py:173
msgid "Provided value does not match required pattern: "
msgstr "Angitt verdi samsvarer ikke med påkrevd mønster: "
@@ -132,397 +140,409 @@ msgstr ""
msgid "The provided primary email address is not valid."
msgstr "Den oppgitte primære e-postadressen er ikke gyldig."
-#: InvenTree/forms.py:274
+#: InvenTree/forms.py:273
msgid "The provided email domain is not approved."
msgstr "Det oppgitte e-postdomenet er ikke godkjent."
-#: InvenTree/forms.py:403
+#: InvenTree/forms.py:402
msgid "Registration is disabled."
msgstr "Registrering er deaktivert."
-#: InvenTree/helpers.py:491 order/models.py:567 order/models.py:810
-msgid "Invalid quantity provided"
-msgstr "Ugyldig mengde oppgitt"
+#: InvenTree/helpers.py:509
+msgid "Cannot serialize more than 1000 items at once"
+msgstr ""
-#: InvenTree/helpers.py:499
+#: InvenTree/helpers.py:515
msgid "Empty serial number string"
msgstr "Tom serienummerstreng"
-#: InvenTree/helpers.py:528
+#: InvenTree/helpers.py:544
msgid "Duplicate serial"
msgstr "Duplisert serienummer"
-#: InvenTree/helpers.py:560 InvenTree/helpers.py:603
+#: InvenTree/helpers.py:576 InvenTree/helpers.py:619 InvenTree/helpers.py:637
+#: InvenTree/helpers.py:644 InvenTree/helpers.py:663
#, python-brace-format
-msgid "Invalid group range: {group}"
-msgstr "Ugyldig gruppesekvens: {group}"
+msgid "Invalid group: {group}"
+msgstr ""
-#: InvenTree/helpers.py:591
+#: InvenTree/helpers.py:607
#, python-brace-format
msgid "Group range {group} exceeds allowed quantity ({expected_quantity})"
msgstr "Gruppesekvens {group} overskrider tillatt antall ({expected_quantity})"
-#: InvenTree/helpers.py:621 InvenTree/helpers.py:628 InvenTree/helpers.py:647
-#, python-brace-format
-msgid "Invalid group sequence: {group}"
-msgstr "Ugyldig gruppesekvens: {group}"
-
-#: InvenTree/helpers.py:657
+#: InvenTree/helpers.py:673
msgid "No serial numbers found"
msgstr "Ingen serienummer funnet"
-#: InvenTree/helpers.py:662
+#: InvenTree/helpers.py:678
msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})"
msgstr "Antall unike serienumre ({len(serials)}) må samsvare med antallet ({expected_quantity})"
-#: InvenTree/helpers.py:780
+#: InvenTree/helpers.py:796
msgid "Remove HTML tags from this value"
msgstr "Fjern HTML-tagger fra denne verdien"
-#: InvenTree/helpers_model.py:133
+#: InvenTree/helpers.py:881
+msgid "Data contains prohibited markdown content"
+msgstr ""
+
+#: InvenTree/helpers_model.py:130
msgid "Connection error"
msgstr "Tilkoblingsfeil"
-#: InvenTree/helpers_model.py:138 InvenTree/helpers_model.py:145
+#: InvenTree/helpers_model.py:135 InvenTree/helpers_model.py:142
msgid "Server responded with invalid status code"
msgstr "Serveren svarte med ugyldig statuskode"
-#: InvenTree/helpers_model.py:141
+#: InvenTree/helpers_model.py:138
msgid "Exception occurred"
msgstr "Det har oppstått et unntak"
-#: InvenTree/helpers_model.py:151
+#: InvenTree/helpers_model.py:148
msgid "Server responded with invalid Content-Length value"
msgstr "Serveren svarte med ugyldig \"Content-Length\"-verdi"
-#: InvenTree/helpers_model.py:154
+#: InvenTree/helpers_model.py:151
msgid "Image size is too large"
msgstr "Bildestørrelsen er for stor"
-#: InvenTree/helpers_model.py:166
+#: InvenTree/helpers_model.py:163
msgid "Image download exceeded maximum size"
msgstr "Bildenedlasting overskred maksimal størrelse"
-#: InvenTree/helpers_model.py:171
+#: InvenTree/helpers_model.py:168
msgid "Remote server returned empty response"
msgstr "Ekstern server returnerte tomt svar"
-#: InvenTree/helpers_model.py:179
+#: InvenTree/helpers_model.py:176
msgid "Supplied URL is not a valid image file"
msgstr "Angitt URL er ikke en gyldig bildefil"
-#: InvenTree/locales.py:18
+#: InvenTree/locales.py:20
msgid "Arabic"
msgstr "Arabisk"
-#: InvenTree/locales.py:19
+#: InvenTree/locales.py:21
msgid "Bulgarian"
msgstr "Bulgarsk"
-#: InvenTree/locales.py:20
+#: InvenTree/locales.py:22
msgid "Czech"
msgstr "Tsjekkisk"
-#: InvenTree/locales.py:21
+#: InvenTree/locales.py:23
msgid "Danish"
msgstr "Dansk"
-#: InvenTree/locales.py:22
+#: InvenTree/locales.py:24
msgid "German"
msgstr "Tysk"
-#: InvenTree/locales.py:23
+#: InvenTree/locales.py:25
msgid "Greek"
msgstr "Gresk"
-#: InvenTree/locales.py:24
+#: InvenTree/locales.py:26
msgid "English"
msgstr "Engelsk"
-#: InvenTree/locales.py:25
+#: InvenTree/locales.py:27
msgid "Spanish"
msgstr "Spansk"
-#: InvenTree/locales.py:26
+#: InvenTree/locales.py:28
msgid "Spanish (Mexican)"
msgstr "Spansk (Meksikansk)"
-#: InvenTree/locales.py:27
+#: InvenTree/locales.py:29
msgid "Estonian"
msgstr "Estisk"
-#: InvenTree/locales.py:28
+#: InvenTree/locales.py:30
msgid "Farsi / Persian"
msgstr "Farsi / Persisk"
-#: InvenTree/locales.py:29
+#: InvenTree/locales.py:31
msgid "Finnish"
msgstr "Finsk"
-#: InvenTree/locales.py:30
+#: InvenTree/locales.py:32
msgid "French"
msgstr "Fransk"
-#: InvenTree/locales.py:31
+#: InvenTree/locales.py:33
msgid "Hebrew"
msgstr "Hebraisk"
-#: InvenTree/locales.py:32
+#: InvenTree/locales.py:34
msgid "Hindi"
msgstr "Hindi"
-#: InvenTree/locales.py:33
+#: InvenTree/locales.py:35
msgid "Hungarian"
msgstr "Ungarsk"
-#: InvenTree/locales.py:34
+#: InvenTree/locales.py:36
msgid "Italian"
msgstr "Italiensk"
-#: InvenTree/locales.py:35
+#: InvenTree/locales.py:37
msgid "Japanese"
msgstr "Japansk"
-#: InvenTree/locales.py:36
+#: InvenTree/locales.py:38
msgid "Korean"
msgstr "Koreansk"
-#: InvenTree/locales.py:37
+#: InvenTree/locales.py:39
+msgid "Lithuanian"
+msgstr ""
+
+#: InvenTree/locales.py:40
msgid "Latvian"
msgstr "Latvisk"
-#: InvenTree/locales.py:38
+#: InvenTree/locales.py:41
msgid "Dutch"
msgstr "Nederlandsk"
-#: InvenTree/locales.py:39
+#: InvenTree/locales.py:42
msgid "Norwegian"
msgstr "Norsk"
-#: InvenTree/locales.py:40
+#: InvenTree/locales.py:43
msgid "Polish"
msgstr "Polsk"
-#: InvenTree/locales.py:41
+#: InvenTree/locales.py:44
msgid "Portuguese"
msgstr "Portugisisk"
-#: InvenTree/locales.py:42
+#: InvenTree/locales.py:45
msgid "Portuguese (Brazilian)"
msgstr "Portugisisk (Brasil)"
-#: InvenTree/locales.py:43
+#: InvenTree/locales.py:46
msgid "Romanian"
msgstr "Rumensk"
-#: InvenTree/locales.py:44
+#: InvenTree/locales.py:47
msgid "Russian"
msgstr "Russisk"
-#: InvenTree/locales.py:45
+#: InvenTree/locales.py:48
msgid "Slovak"
msgstr "Slovakisk"
-#: InvenTree/locales.py:46
+#: InvenTree/locales.py:49
msgid "Slovenian"
msgstr "Slovensk"
-#: InvenTree/locales.py:47
+#: InvenTree/locales.py:50
msgid "Serbian"
msgstr "Serbisk"
-#: InvenTree/locales.py:48
+#: InvenTree/locales.py:51
msgid "Swedish"
msgstr "Svensk"
-#: InvenTree/locales.py:49
+#: InvenTree/locales.py:52
msgid "Thai"
msgstr "Thailandsk"
-#: InvenTree/locales.py:50
+#: InvenTree/locales.py:53
msgid "Turkish"
msgstr "Tyrkisk"
-#: InvenTree/locales.py:51
+#: InvenTree/locales.py:54
msgid "Ukrainian"
msgstr "Ukrainsk"
-#: InvenTree/locales.py:52
+#: InvenTree/locales.py:55
msgid "Vietnamese"
msgstr "Vietnamesisk"
-#: InvenTree/locales.py:53
+#: InvenTree/locales.py:56
msgid "Chinese (Simplified)"
msgstr "Kinesisk (forenklet)"
-#: InvenTree/locales.py:54
+#: InvenTree/locales.py:57
msgid "Chinese (Traditional)"
msgstr "Kinesisk (tradisjonell)"
#: InvenTree/magic_login.py:28
-#, python-brace-format
-msgid "[{site_name}] Log in to the app"
-msgstr "[{site_name}] Logg inn på appen"
+msgid "Log in to the app"
+msgstr ""
-#: InvenTree/magic_login.py:38 InvenTree/serializers.py:415
-#: company/models.py:136 company/templates/company/company_base.html:138
+#: InvenTree/magic_login.py:38 InvenTree/serializers.py:416
+#: company/models.py:133 company/templates/company/company_base.html:138
#: templates/InvenTree/settings/user.html:49
-#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:678
msgid "Email"
msgstr "E-post"
-#: InvenTree/models.py:103
+#: InvenTree/models.py:105
msgid "Error running plugin validation"
msgstr "Feil under validering av utvidelse"
-#: InvenTree/models.py:172
+#: InvenTree/models.py:174
msgid "Metadata must be a python dict object"
msgstr "Metadata må være et python dict-objekt"
-#: InvenTree/models.py:178
+#: InvenTree/models.py:180
msgid "Plugin Metadata"
msgstr "Utvidelse-metadata"
-#: InvenTree/models.py:179
+#: InvenTree/models.py:181
msgid "JSON metadata field, for use by external plugins"
msgstr "JSON-metadatafelt, for bruk av eksterne utvidelser"
-#: InvenTree/models.py:409
+#: InvenTree/models.py:408
msgid "Improperly formatted pattern"
msgstr "Uriktig formatert mønster"
-#: InvenTree/models.py:416
+#: InvenTree/models.py:415
msgid "Unknown format key specified"
msgstr "Ukjent formatnøkkel spesifisert"
-#: InvenTree/models.py:422
+#: InvenTree/models.py:421
msgid "Missing required format key"
msgstr "Mangler nødvendig formatnøkkel"
-#: InvenTree/models.py:433
+#: InvenTree/models.py:432
msgid "Reference field cannot be empty"
msgstr "Referansefeltet kan ikke være tomt"
-#: InvenTree/models.py:441
+#: InvenTree/models.py:440
msgid "Reference must match required pattern"
msgstr "Referansen må samsvare påkrevd mønster"
-#: InvenTree/models.py:472
+#: InvenTree/models.py:471
msgid "Reference number is too large"
msgstr "Referansenummeret er for stort"
-#: InvenTree/models.py:723
+#: InvenTree/models.py:722
msgid "Duplicate names cannot exist under the same parent"
msgstr "Duplikatnavn kan ikke eksistere under samme overordnede"
-#: InvenTree/models.py:740
+#: InvenTree/models.py:739
msgid "Invalid choice"
msgstr "Ugyldig valg"
-#: InvenTree/models.py:770 common/models.py:2702 common/models.py:3132
-#: common/serializers.py:412 company/models.py:593 machine/models.py:24
-#: part/models.py:983 part/models.py:3764 plugin/models.py:51
-#: report/models.py:149 stock/models.py:77
+#: InvenTree/models.py:769 common/models.py:2766 common/models.py:3193
+#: common/models.py:3413 common/serializers.py:460 company/models.py:590
+#: machine/models.py:24 part/models.py:1044 part/models.py:3815
+#: plugin/models.py:51 report/models.py:149 stock/models.py:83
#: templates/InvenTree/settings/mixins/urls.html:13
#: templates/InvenTree/settings/notifications.html:17
#: templates/InvenTree/settings/plugin.html:83
#: templates/InvenTree/settings/plugin_settings.html:22
#: templates/InvenTree/settings/settings_staff_js.html:67
#: templates/InvenTree/settings/settings_staff_js.html:454
-#: templates/js/translated/company.js:676
-#: templates/js/translated/company.js:724
-#: templates/js/translated/company.js:913
-#: templates/js/translated/company.js:1165
-#: templates/js/translated/company.js:1413 templates/js/translated/part.js:1193
+#: templates/js/translated/company.js:677
+#: templates/js/translated/company.js:725
+#: templates/js/translated/company.js:914
+#: templates/js/translated/company.js:1166
+#: templates/js/translated/company.js:1414 templates/js/translated/part.js:1193
#: templates/js/translated/part.js:1481 templates/js/translated/part.js:1617
-#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2801
+#: templates/js/translated/part.js:2768 templates/js/translated/stock.js:2802
msgid "Name"
msgstr "Navn"
-#: InvenTree/models.py:776 build/models.py:250
-#: build/templates/build/detail.html:24 common/models.py:156
-#: company/models.py:521 company/models.py:827
+#: InvenTree/models.py:775 build/models.py:251
+#: build/templates/build/detail.html:24 common/models.py:159
+#: company/models.py:518 company/models.py:824
#: company/templates/company/company_base.html:77
#: company/templates/company/manufacturer_part.html:75
-#: company/templates/company/supplier_part.html:107 order/models.py:288
-#: order/models.py:1413 part/admin.py:305 part/admin.py:411 part/models.py:1006
-#: part/models.py:3779 part/templates/part/category.html:79
-#: part/templates/part/part_base.html:170
+#: company/templates/company/supplier_part.html:108 order/models.py:295
+#: order/models.py:1430 part/admin.py:305 part/admin.py:411 part/models.py:1067
+#: part/models.py:3830 part/templates/part/category.html:79
+#: part/templates/part/part_base.html:171
#: part/templates/part/part_scheduling.html:12 report/models.py:155
-#: report/models.py:509 report/models.py:535
+#: report/models.py:517 report/models.py:543
#: report/templates/report/inventree_build_order_report.html:117
-#: stock/admin.py:54 stock/models.py:83 stock/templates/stock/location.html:122
+#: stock/admin.py:54 stock/models.py:89 stock/templates/stock/location.html:123
#: templates/InvenTree/settings/notifications.html:19
#: templates/InvenTree/settings/plugin_settings.html:27
#: templates/InvenTree/settings/settings_staff_js.html:170
#: templates/InvenTree/settings/settings_staff_js.html:459
#: templates/js/translated/bom.js:633 templates/js/translated/bom.js:963
-#: templates/js/translated/build.js:2311 templates/js/translated/company.js:519
-#: templates/js/translated/company.js:1330
-#: templates/js/translated/company.js:1641 templates/js/translated/index.js:119
+#: templates/js/translated/build.js:2314 templates/js/translated/company.js:520
+#: templates/js/translated/company.js:1331
+#: templates/js/translated/company.js:1642 templates/js/translated/index.js:119
#: templates/js/translated/order.js:323 templates/js/translated/part.js:1245
#: templates/js/translated/part.js:1490 templates/js/translated/part.js:1628
#: templates/js/translated/part.js:1965 templates/js/translated/part.js:2361
#: templates/js/translated/part.js:2803 templates/js/translated/part.js:2915
#: templates/js/translated/plugin.js:80
-#: templates/js/translated/purchase_order.js:1776
-#: templates/js/translated/purchase_order.js:1919
-#: templates/js/translated/purchase_order.js:2092
+#: templates/js/translated/purchase_order.js:1760
+#: templates/js/translated/purchase_order.js:1903
+#: templates/js/translated/purchase_order.js:2076
#: templates/js/translated/return_order.js:313
-#: templates/js/translated/sales_order.js:838
-#: templates/js/translated/sales_order.js:1848
-#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2143
-#: templates/js/translated/stock.js:2832 templates/js/translated/stock.js:2915
+#: templates/js/translated/sales_order.js:797
+#: templates/js/translated/sales_order.js:1829
+#: templates/js/translated/stock.js:1600 templates/js/translated/stock.js:2144
+#: templates/js/translated/stock.js:2833 templates/js/translated/stock.js:2916
msgid "Description"
msgstr "Beskrivelse"
-#: InvenTree/models.py:777 stock/models.py:84
+#: InvenTree/models.py:776 stock/models.py:90
msgid "Description (optional)"
msgstr "Beskrivelse (valgfritt)"
-#: InvenTree/models.py:792 templates/js/translated/part.js:2812
-#: templates/js/translated/stock.js:2841
+#: InvenTree/models.py:791 common/models.py:3546
+#: templates/js/translated/part.js:2812 templates/js/translated/stock.js:2842
msgid "Path"
msgstr "Sti"
-#: InvenTree/models.py:929
+#: InvenTree/models.py:928
msgid "Markdown notes (optional)"
msgstr "Markdown-notater (valgfritt)"
-#: InvenTree/models.py:960
+#: InvenTree/models.py:959
msgid "Barcode Data"
msgstr "Strekkodedata"
-#: InvenTree/models.py:961
+#: InvenTree/models.py:960
msgid "Third party barcode data"
msgstr "Tredjeparts strekkodedata"
-#: InvenTree/models.py:967
+#: InvenTree/models.py:966
msgid "Barcode Hash"
msgstr "Strekkode-hash"
-#: InvenTree/models.py:968
+#: InvenTree/models.py:967
msgid "Unique hash of barcode data"
msgstr "Unik hash av strekkodedata"
-#: InvenTree/models.py:1035
+#: InvenTree/models.py:1034
msgid "Existing barcode found"
msgstr "Eksisterende strekkode funnet"
-#: InvenTree/models.py:1078
+#: InvenTree/models.py:1112
+msgid "Task Failure"
+msgstr ""
+
+#: InvenTree/models.py:1114
+#, python-brace-format
+msgid "Background worker task '{instance.func}' failed after {n} attempts"
+msgstr ""
+
+#: InvenTree/models.py:1142
msgid "Server Error"
msgstr "Serverfeil"
-#: InvenTree/models.py:1079
+#: InvenTree/models.py:1143
msgid "An error has been logged by the server."
msgstr "En feil har blitt logget av serveren."
-#: InvenTree/serializers.py:63 part/models.py:4387
+#: InvenTree/serializers.py:63 part/models.py:4444
msgid "Must be a valid number"
msgstr "Må være et gyldig tall"
-#: InvenTree/serializers.py:100 company/models.py:186
-#: company/templates/company/company_base.html:112 part/models.py:3115
+#: InvenTree/serializers.py:100 company/models.py:183
+#: company/templates/company/company_base.html:112 part/models.py:3166
#: templates/InvenTree/settings/settings_staff_js.html:44
#: templates/currency_data.html:5
msgid "Currency"
@@ -532,15 +552,15 @@ msgstr "Valuta"
msgid "Select currency from available options"
msgstr "Velg valuta ut fra tilgjengelige alternativer"
-#: InvenTree/serializers.py:407 templates/InvenTree/settings/user.html:33
+#: InvenTree/serializers.py:405 templates/InvenTree/settings/user.html:33
msgid "Username"
msgstr "Brukernavn"
-#: InvenTree/serializers.py:409 templates/InvenTree/settings/user.html:37
+#: InvenTree/serializers.py:408 templates/InvenTree/settings/user.html:37
msgid "First Name"
msgstr "Fornavn"
-#: InvenTree/serializers.py:409
+#: InvenTree/serializers.py:408
msgid "First name of the user"
msgstr "Fornavn på brukeren"
@@ -552,30 +572,30 @@ msgstr "Etternavn"
msgid "Last name of the user"
msgstr "Etternavn på brukeren"
-#: InvenTree/serializers.py:415
+#: InvenTree/serializers.py:416
msgid "Email address of the user"
msgstr "E-postadressen til brukeren"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Staff"
msgstr "Personale"
-#: InvenTree/serializers.py:439
+#: InvenTree/serializers.py:441
msgid "Does this user have staff permissions"
msgstr "Har denne brukeren personelltillatelser"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Superuser"
msgstr "Superbruker"
-#: InvenTree/serializers.py:442
+#: InvenTree/serializers.py:445
msgid "Is this user a superuser"
msgstr "Er denne brukeren en superbruker"
-#: InvenTree/serializers.py:445 common/models.py:2707 company/models.py:163
-#: company/models.py:801 machine/models.py:39 part/admin.py:88
-#: part/models.py:1189 plugin/models.py:66
-#: templates/js/translated/company.js:523
+#: InvenTree/serializers.py:449 common/models.py:2771 company/models.py:160
+#: company/models.py:798 machine/models.py:39 part/admin.py:88
+#: part/models.py:1250 plugin/models.py:66
+#: templates/js/translated/company.js:524
#: templates/js/translated/table_filters.js:134
#: templates/js/translated/table_filters.js:226
#: templates/js/translated/table_filters.js:513
@@ -585,230 +605,229 @@ msgstr "Er denne brukeren en superbruker"
msgid "Active"
msgstr "Aktiv"
-#: InvenTree/serializers.py:445
+#: InvenTree/serializers.py:449
msgid "Is this user account active"
msgstr "Er denne brukerkontoen aktiv"
-#: InvenTree/serializers.py:463
+#: InvenTree/serializers.py:467
msgid "You do not have permission to change this user role."
msgstr "Du har ikke tillatelse til å endre denne brukerrollen."
-#: InvenTree/serializers.py:475
+#: InvenTree/serializers.py:503
msgid "Only superusers can create new users"
msgstr "Bare superbrukere kan opprette nye brukere"
-#: InvenTree/serializers.py:494
+#: InvenTree/serializers.py:523
msgid "Your account has been created."
msgstr "Din konto er opprettet."
-#: InvenTree/serializers.py:496
+#: InvenTree/serializers.py:525
msgid "Please use the password reset function to login"
msgstr "Vennligst bruk funksjonen for å tilbakestille passord for å logge inn"
-#: InvenTree/serializers.py:503
+#: InvenTree/serializers.py:531
msgid "Welcome to InvenTree"
msgstr "Velkommen til InvenTree"
-#: InvenTree/serializers.py:561
+#: InvenTree/serializers.py:594
msgid "Invalid value"
msgstr "Ugyldig verdi"
-#: InvenTree/serializers.py:581 importer/models.py:63
+#: InvenTree/serializers.py:614 importer/models.py:64
msgid "Data File"
msgstr "Datafil"
-#: InvenTree/serializers.py:582
+#: InvenTree/serializers.py:615
msgid "Select data file for upload"
msgstr "Velg datafil for opplasting"
-#: InvenTree/serializers.py:599
-msgid "Unsupported file type"
-msgstr "Filtypen støttes ikke"
+#: InvenTree/serializers.py:632 common/files.py:63
+msgid "Unsupported file format"
+msgstr ""
-#: InvenTree/serializers.py:605
+#: InvenTree/serializers.py:638
msgid "File is too large"
msgstr "Filen er for stor"
-#: InvenTree/serializers.py:626
+#: InvenTree/serializers.py:659
msgid "No columns found in file"
msgstr "Ingen kolonner funnet i filen"
-#: InvenTree/serializers.py:629
+#: InvenTree/serializers.py:662
msgid "No data rows found in file"
msgstr "Ingen datarader funnet i fil"
-#: InvenTree/serializers.py:742
+#: InvenTree/serializers.py:774
msgid "No data rows provided"
msgstr "Ingen datarader oppgitt"
-#: InvenTree/serializers.py:745
+#: InvenTree/serializers.py:777
msgid "No data columns supplied"
msgstr "Ingen datakolonner angitt"
-#: InvenTree/serializers.py:812
+#: InvenTree/serializers.py:843
#, python-brace-format
msgid "Missing required column: '{name}'"
msgstr "Mangler påkrevd kolonne: '{name}'"
-#: InvenTree/serializers.py:821
+#: InvenTree/serializers.py:852
#, python-brace-format
msgid "Duplicate column: '{col}'"
msgstr "Dupliaktkolonne: '{col}'"
-#: InvenTree/serializers.py:861
+#: InvenTree/serializers.py:891
msgid "Remote Image"
msgstr "Eksternt bilde"
-#: InvenTree/serializers.py:862
+#: InvenTree/serializers.py:892
msgid "URL of remote image file"
msgstr "URLtil ekstern bildefil"
-#: InvenTree/serializers.py:880
+#: InvenTree/serializers.py:910
msgid "Downloading images from remote URL is not enabled"
msgstr "Nedlasting av bilder fra ekstern URL er ikke aktivert"
-#: InvenTree/status.py:66 part/serializers.py:1246
-msgid "Background worker check failed"
-msgstr "Sjekk av bakgrunnsarbeider mislyktes"
-
-#: InvenTree/status.py:70
-msgid "Email backend not configured"
-msgstr "E-post backend ikke konfigurert"
-
-#: InvenTree/status.py:73
-msgid "InvenTree system health checks failed"
-msgstr "InvenTree's-systemets helsesjekker mislyktes"
+#: InvenTree/serializers.py:917
+msgid "Failed to download image from remote URL"
+msgstr ""
#: InvenTree/templatetags/inventree_extras.py:184
msgid "Unknown database"
msgstr "Ukjent database"
-#: InvenTree/validators.py:32 InvenTree/validators.py:34
+#: InvenTree/validators.py:32
msgid "Invalid physical unit"
msgstr "Ugyldig fysisk enhet"
-#: InvenTree/validators.py:40
+#: InvenTree/validators.py:38
msgid "Not a valid currency code"
msgstr "Ikke en gyldig valutakode"
-#: InvenTree/validators.py:118 InvenTree/validators.py:134
+#: InvenTree/validators.py:115 InvenTree/validators.py:131
msgid "Overage value must not be negative"
msgstr "Svinn-verdien kan ikke være negativ"
-#: InvenTree/validators.py:136
+#: InvenTree/validators.py:133
msgid "Overage must not exceed 100%"
msgstr "Svinn kan ikke overstige 100%"
-#: InvenTree/validators.py:142
+#: InvenTree/validators.py:139
msgid "Invalid value for overage"
msgstr "Ugyldig verdi for svinn"
-#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23
+#: InvenTree/views.py:399 templates/InvenTree/settings/user.html:23
msgid "Edit User Information"
msgstr "Rediger brukerinformasjon"
-#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20
+#: InvenTree/views.py:411 templates/InvenTree/settings/user.html:20
msgid "Set Password"
msgstr "Velg passord"
-#: InvenTree/views.py:434
+#: InvenTree/views.py:433
msgid "Password fields must match"
msgstr "Passordfeltene må samsvare"
-#: InvenTree/views.py:442
+#: InvenTree/views.py:441
msgid "Wrong password provided"
msgstr "Feil passord angitt"
-#: InvenTree/views.py:650 templates/navbar.html:160
+#: InvenTree/views.py:645 templates/navbar.html:160
msgid "System Information"
msgstr "Systeminformasjon"
-#: InvenTree/views.py:657 templates/navbar.html:171
+#: InvenTree/views.py:652 templates/navbar.html:171
msgid "About InvenTree"
msgstr "Om InvenTree"
-#: build/api.py:51 part/api.py:156 stock/api.py:343
-msgid "Cascade"
-msgstr ""
-
-#: build/api.py:64 build/models.py:261
-#: build/templates/build/build_base.html:191
+#: build/api.py:54 build/models.py:262
+#: build/templates/build/build_base.html:192
#: build/templates/build/detail.html:87
msgid "Parent Build"
msgstr "Overordnet produksjon"
-#: build/api.py:89 order/api.py:92 templates/js/translated/table_filters.js:101
+#: build/api.py:58 build/api.py:625 order/api.py:396 order/api.py:611
+#: order/api.py:990 order/api.py:1187
+#: templates/js/translated/table_filters.js:372
+msgid "Include Variants"
+msgstr ""
+
+#: build/api.py:93
+msgid "Ancestor Build"
+msgstr ""
+
+#: build/api.py:112 order/api.py:90
+#: templates/js/translated/table_filters.js:101
#: templates/js/translated/table_filters.js:549
#: templates/js/translated/table_filters.js:633
#: templates/js/translated/table_filters.js:674
msgid "Assigned to me"
msgstr ""
-#: build/api.py:106 build/templates/build/build_base.html:205
+#: build/api.py:129 build/templates/build/build_base.html:206
#: build/templates/build/detail.html:115
#: report/templates/report/inventree_build_order_report.html:152
#: templates/js/translated/table_filters.js:552
msgid "Issued By"
msgstr "Utstedt av"
-#: build/api.py:125
+#: build/api.py:148
msgid "Assigned To"
msgstr ""
-#: build/api.py:301
+#: build/api.py:310
msgid "Build must be cancelled before it can be deleted"
msgstr "Produksjonen må avbrytes før den kan slettes"
-#: build/api.py:345 build/serializers.py:1288 part/models.py:4265
+#: build/api.py:354 build/serializers.py:1342 part/models.py:4322
#: templates/js/translated/bom.js:997 templates/js/translated/bom.js:1037
-#: templates/js/translated/build.js:2702
+#: templates/js/translated/build.js:2711
#: templates/js/translated/table_filters.js:197
#: templates/js/translated/table_filters.js:586
msgid "Consumable"
msgstr "Forbruksvare"
-#: build/api.py:346 build/serializers.py:1289 part/models.py:4259
+#: build/api.py:355 build/serializers.py:1343 part/models.py:4316
#: part/templates/part/upload_bom.html:58 templates/js/translated/bom.js:1001
-#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2693
+#: templates/js/translated/bom.js:1028 templates/js/translated/build.js:2702
#: templates/js/translated/table_filters.js:193
#: templates/js/translated/table_filters.js:222
#: templates/js/translated/table_filters.js:590
msgid "Optional"
msgstr "Valgfritt"
-#: build/api.py:347 common/models.py:1489 part/admin.py:91 part/admin.py:428
-#: part/models.py:1154 part/serializers.py:1575
+#: build/api.py:356 common/models.py:1558 part/admin.py:91 part/admin.py:428
+#: part/models.py:1215 part/serializers.py:1633
#: templates/js/translated/bom.js:1639
#: templates/js/translated/table_filters.js:337
#: templates/js/translated/table_filters.js:729
msgid "Assembly"
msgstr "Sammenstilling"
-#: build/api.py:348 templates/js/translated/table_filters.js:415
+#: build/api.py:357 templates/js/translated/table_filters.js:415
#: templates/js/translated/table_filters.js:582
msgid "Tracked"
msgstr "Spores"
-#: build/api.py:349 build/serializers.py:1290 part/models.py:1172
+#: build/api.py:358 build/serializers.py:1344 part/models.py:1233
#: templates/js/translated/table_filters.js:146
#: templates/js/translated/table_filters.js:779
msgid "Testable"
msgstr ""
-#: build/api.py:351 part/admin.py:144 templates/js/translated/build.js:1917
-#: templates/js/translated/build.js:2820
-#: templates/js/translated/sales_order.js:1965
+#: build/api.py:360 order/api.py:779 part/admin.py:144
+#: templates/js/translated/build.js:1920 templates/js/translated/build.js:2838
+#: templates/js/translated/sales_order.js:1946
#: templates/js/translated/table_filters.js:574
msgid "Allocated"
msgstr "Tildelt"
-#: build/api.py:359 company/models.py:891 company/serializers.py:395
-#: company/templates/company/supplier_part.html:114
+#: build/api.py:368 company/models.py:888 company/serializers.py:399
+#: 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:1162 templates/js/translated/build.js:2752
+#: templates/js/translated/bom.js:1162 templates/js/translated/build.js:2770
#: templates/js/translated/index.js:123
-#: templates/js/translated/model_renderers.js:235
+#: templates/js/translated/model_renderers.js:238
#: templates/js/translated/part.js:695 templates/js/translated/part.js:697
#: templates/js/translated/part.js:702
#: templates/js/translated/table_filters.js:347
@@ -816,16 +835,68 @@ msgstr "Tildelt"
msgid "Available"
msgstr "Tilgjengelig"
-#: build/models.py:86 build/templates/build/build_base.html:9
-#: build/templates/build/build_base.html:27
+#: build/api.py:640 build/models.py:268 build/serializers.py:1330
+#: build/templates/build/build_base.html:106
+#: build/templates/build/detail.html:29 company/models.py:1043 order/api.py:775
+#: order/api.py:1003 order/models.py:1519 order/models.py:1674
+#: order/models.py:1675 part/api.py:1495 part/api.py:1802 part/models.py:419
+#: part/models.py:3177 part/models.py:3321 part/models.py:3469
+#: part/models.py:3490 part/models.py:3512 part/models.py:3648
+#: part/models.py:3995 part/models.py:4158 part/models.py:4288
+#: part/models.py:4654 part/serializers.py:1245 part/serializers.py:1898
+#: part/templates/part/part_app_base.html:8
+#: part/templates/part/part_pricing.html:12
+#: part/templates/part/upload_bom.html:52
+#: report/templates/report/inventree_bill_of_materials_report.html:110
+#: report/templates/report/inventree_bill_of_materials_report.html:137
+#: report/templates/report/inventree_build_order_report.html:109
+#: report/templates/report/inventree_purchase_order_report.html:27
+#: report/templates/report/inventree_return_order_report.html:24
+#: report/templates/report/inventree_sales_order_report.html:27
+#: report/templates/report/inventree_sales_order_shipment_report.html:28
+#: report/templates/report/inventree_stock_location_report.html:102
+#: stock/serializers.py:112 stock/serializers.py:160 stock/serializers.py:456
+#: stock/serializers.py:947 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:577 templates/js/translated/bom.js:632
+#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
+#: templates/js/translated/build.js:1005 templates/js/translated/build.js:1488
+#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2337
+#: templates/js/translated/build.js:2514 templates/js/translated/company.js:349
+#: templates/js/translated/company.js:1117
+#: templates/js/translated/company.js:1272
+#: templates/js/translated/company.js:1560 templates/js/translated/index.js:109
+#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
+#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
+#: templates/js/translated/purchase_order.js:734
+#: templates/js/translated/purchase_order.js:1350
+#: templates/js/translated/purchase_order.js:1902
+#: templates/js/translated/purchase_order.js:2061
+#: templates/js/translated/return_order.js:538
+#: templates/js/translated/return_order.js:708
+#: templates/js/translated/sales_order.js:1199
+#: templates/js/translated/sales_order.js:1608
+#: templates/js/translated/sales_order.js:1813
+#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
+#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2083
+#: templates/js/translated/stock.js:2942 templates/js/translated/stock.js:3175
+#: templates/js/translated/stock.js:3320
+msgid "Part"
+msgstr "Del"
+
+#: build/api.py:662 build/models.py:88 build/templates/build/build_base.html:10
+#: build/templates/build/build_base.html:28
#: report/templates/report/inventree_build_order_report.html:105
-#: stock/serializers.py:84 templates/email/build_order_completed.html:16
+#: stock/serializers.py:85 templates/email/build_order_completed.html:16
#: templates/email/overdue_build_order.html:15
-#: templates/js/translated/build.js:1145 templates/js/translated/stock.js:2976
+#: templates/js/translated/build.js:1148 templates/js/translated/stock.js:2977
msgid "Build Order"
msgstr "Produksjonsordre"
-#: build/models.py:87 build/templates/build/build_base.html:13
+#: build/models.py:89 build/templates/build/build_base.html:14
#: 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
@@ -836,268 +907,216 @@ msgstr "Produksjonsordre"
msgid "Build Orders"
msgstr "Produksjonsordrer"
-#: build/models.py:135
+#: build/models.py:136
msgid "Assembly BOM has not been validated"
msgstr "Sammenstillings-BOMen er ikke godkjent"
-#: build/models.py:142
+#: build/models.py:143
msgid "Build order cannot be created for an inactive part"
msgstr "Produksjonsordre kan ikke opprettes for en inaktiv del"
-#: build/models.py:149
+#: build/models.py:150
msgid "Build order cannot be created for an unlocked part"
msgstr "Produksjonsordre kan ikke opprettes for en ulåst del"
-#: build/models.py:163
+#: build/models.py:164
msgid "Invalid choice for parent build"
msgstr "Ugyldig valg for overordnet produksjon"
-#: build/models.py:174 order/models.py:239
+#: build/models.py:175 order/models.py:236
msgid "Responsible user or group must be specified"
msgstr "Ansvarlig bruker eller gruppe må spesifiseres"
-#: build/models.py:180
+#: build/models.py:181
msgid "Build order part cannot be changed"
msgstr "Produksjonsordrens del kan ikke endres"
-#: build/models.py:241
+#: build/models.py:242
msgid "Build Order Reference"
msgstr "Produksjonsordre-referanse"
-#: build/models.py:242 build/serializers.py:1287 order/models.py:467
-#: order/models.py:978 order/models.py:1373 order/models.py:2135
-#: part/admin.py:414 part/models.py:4280 part/templates/part/upload_bom.html:54
+#: build/models.py:243 build/serializers.py:1341 order/models.py:479
+#: order/models.py:1005 order/models.py:1390 order/models.py:2174
+#: part/admin.py:414 part/models.py:4337 part/templates/part/upload_bom.html:54
#: report/templates/report/inventree_bill_of_materials_report.html:139
#: report/templates/report/inventree_purchase_order_report.html:28
#: report/templates/report/inventree_return_order_report.html:26
#: report/templates/report/inventree_sales_order_report.html:28
#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973
-#: templates/js/translated/build.js:1011 templates/js/translated/build.js:2685
+#: templates/js/translated/build.js:1014 templates/js/translated/build.js:2694
#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:386
-#: templates/js/translated/purchase_order.js:2135
+#: templates/js/translated/purchase_order.js:2119
#: templates/js/translated/return_order.js:727
-#: templates/js/translated/sales_order.js:1854
+#: templates/js/translated/sales_order.js:1835
msgid "Reference"
msgstr "Referanse"
-#: build/models.py:253
+#: build/models.py:254
msgid "Brief description of the build (optional)"
msgstr "Kort beskrivelse av produksjonen (valgfritt)"
-#: build/models.py:262
+#: build/models.py:263
msgid "BuildOrder to which this build is allocated"
msgstr "Produksjonsordre som denne produksjonen er tildelt"
-#: build/models.py:267 build/serializers.py:1278
-#: build/templates/build/build_base.html:105
-#: build/templates/build/detail.html:29 company/models.py:1046 order/api.py:767
-#: order/models.py:1503 order/models.py:1658 order/models.py:1659
-#: part/api.py:1509 part/api.py:1813 part/models.py:424 part/models.py:3126
-#: part/models.py:3270 part/models.py:3418 part/models.py:3439
-#: part/models.py:3461 part/models.py:3597 part/models.py:3937
-#: part/models.py:4100 part/models.py:4231 part/models.py:4592
-#: part/serializers.py:1192 part/serializers.py:1836
-#: part/templates/part/part_app_base.html:8
-#: part/templates/part/part_pricing.html:12
-#: part/templates/part/upload_bom.html:52
-#: report/templates/report/inventree_bill_of_materials_report.html:110
-#: report/templates/report/inventree_bill_of_materials_report.html:137
-#: report/templates/report/inventree_build_order_report.html:109
-#: report/templates/report/inventree_purchase_order_report.html:27
-#: report/templates/report/inventree_return_order_report.html:24
-#: report/templates/report/inventree_sales_order_report.html:27
-#: report/templates/report/inventree_stock_location_report.html:102
-#: stock/serializers.py:111 stock/serializers.py:159 stock/serializers.py:446
-#: stock/serializers.py:916 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:577 templates/js/translated/bom.js:632
-#: templates/js/translated/bom.js:769 templates/js/translated/bom.js:905
-#: templates/js/translated/build.js:1002 templates/js/translated/build.js:1485
-#: templates/js/translated/build.js:1916 templates/js/translated/build.js:2334
-#: templates/js/translated/build.js:2507 templates/js/translated/company.js:348
-#: templates/js/translated/company.js:1116
-#: templates/js/translated/company.js:1271
-#: templates/js/translated/company.js:1559 templates/js/translated/index.js:109
-#: templates/js/translated/part.js:1950 templates/js/translated/part.js:2022
-#: templates/js/translated/part.js:2330 templates/js/translated/pricing.js:369
-#: templates/js/translated/purchase_order.js:751
-#: templates/js/translated/purchase_order.js:1367
-#: templates/js/translated/purchase_order.js:1918
-#: templates/js/translated/purchase_order.js:2077
-#: templates/js/translated/return_order.js:538
-#: templates/js/translated/return_order.js:708
-#: templates/js/translated/sales_order.js:300
-#: templates/js/translated/sales_order.js:1233
-#: templates/js/translated/sales_order.js:1634
-#: templates/js/translated/sales_order.js:1832
-#: templates/js/translated/stock.js:682 templates/js/translated/stock.js:848
-#: templates/js/translated/stock.js:1065 templates/js/translated/stock.js:2082
-#: templates/js/translated/stock.js:2941 templates/js/translated/stock.js:3174
-#: templates/js/translated/stock.js:3319
-msgid "Part"
-msgstr "Del"
-
-#: build/models.py:275
+#: build/models.py:274
msgid "Select part to build"
msgstr "Velg del å produsere"
-#: build/models.py:280
+#: build/models.py:279
msgid "Sales Order Reference"
msgstr "Salgsordrereferanse"
-#: build/models.py:284
+#: build/models.py:283
msgid "SalesOrder to which this build is allocated"
msgstr "Salgsordren denne produksjonen er tildelt til"
-#: build/models.py:289 build/serializers.py:1048
-#: templates/js/translated/build.js:1904
-#: templates/js/translated/sales_order.js:1221
+#: build/models.py:288 build/serializers.py:1092
+#: templates/js/translated/build.js:1907
+#: templates/js/translated/sales_order.js:1187
msgid "Source Location"
msgstr "Kildeplassering"
-#: build/models.py:293
+#: build/models.py:292
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:298
+#: build/models.py:297
msgid "Destination Location"
msgstr "Fullført plassering"
-#: build/models.py:302
+#: build/models.py:301
msgid "Select location where the completed items will be stored"
msgstr "Velg plassering der fullførte artikler vil bli lagret"
-#: build/models.py:306
+#: build/models.py:305
msgid "Build Quantity"
msgstr "Produksjonsmengde"
-#: build/models.py:309
+#: build/models.py:308
msgid "Number of stock items to build"
msgstr "Antall lagervarer å produsere"
-#: build/models.py:313
+#: build/models.py:312
msgid "Completed items"
msgstr "Fullførte artikler"
-#: build/models.py:315
+#: build/models.py:314
msgid "Number of stock items which have been completed"
msgstr "Antall lagervarer som er fullført"
-#: build/models.py:319
+#: build/models.py:318
msgid "Build Status"
msgstr "Produksjonsstatus"
-#: build/models.py:323
+#: build/models.py:322
msgid "Build status code"
msgstr "Produksjonsstatuskode"
-#: build/models.py:332 build/serializers.py:302 build/serializers.py:1198
-#: order/serializers.py:670 stock/models.py:859 stock/serializers.py:76
-#: stock/serializers.py:1562 templates/js/translated/purchase_order.js:1129
+#: build/models.py:331 build/serializers.py:349 build/serializers.py:1243
+#: order/serializers.py:755 stock/models.py:936 stock/serializers.py:77
+#: stock/serializers.py:1593 templates/js/translated/purchase_order.js:1112
#: templates/js/translated/stock.js:1199
msgid "Batch Code"
msgstr "Batchkode"
-#: build/models.py:336 build/serializers.py:303
+#: build/models.py:335 build/serializers.py:350
msgid "Batch code for this build output"
msgstr "Batchkode for denne produksjonsartikkelen"
-#: build/models.py:339 order/models.py:315 order/serializers.py:126
-#: part/models.py:1229 part/templates/part/part_base.html:319
+#: build/models.py:338 order/models.py:322 order/serializers.py:157
+#: part/models.py:1290 part/templates/part/part_base.html:327
#: templates/js/translated/return_order.js:338
-#: templates/js/translated/sales_order.js:863
+#: templates/js/translated/sales_order.js:822
msgid "Creation Date"
msgstr "Opprettelsesdato"
-#: build/models.py:343
+#: build/models.py:342
msgid "Target completion date"
msgstr "Forventet sluttdato"
-#: build/models.py:344
+#: build/models.py:343
msgid "Target date for build completion. Build will be overdue after this date."
msgstr "Måldato for ferdigstillelse. Produksjonen vil være forfalt etter denne datoen."
-#: build/models.py:347 order/models.py:526 order/models.py:2180
-#: templates/js/translated/build.js:2419
+#: build/models.py:346 order/models.py:538 order/models.py:2219
+#: templates/js/translated/build.js:2422
msgid "Completion Date"
msgstr "Fullført dato"
-#: build/models.py:353
+#: build/models.py:352
msgid "completed by"
msgstr "fullført av"
-#: build/models.py:361 templates/js/translated/build.js:2379
+#: build/models.py:360 templates/js/translated/build.js:2382
msgid "Issued by"
msgstr "Utstedt av"
-#: build/models.py:362
+#: build/models.py:361
msgid "User who issued this build order"
msgstr "Brukeren som utstedte denne produksjonsordren"
-#: build/models.py:370 build/templates/build/build_base.html:212
-#: build/templates/build/detail.html:122 common/models.py:165 order/api.py:142
-#: order/models.py:333 order/templates/order/order_base.html:222
-#: order/templates/order/return_order_base.html:191
-#: order/templates/order/sales_order_base.html:235 part/models.py:1246
-#: part/templates/part/part_base.html:399
+#: build/models.py:369 build/templates/build/build_base.html:213
+#: build/templates/build/detail.html:122 common/models.py:168 order/api.py:140
+#: order/models.py:340 order/templates/order/order_base.html:231
+#: order/templates/order/return_order_base.html:192
+#: order/templates/order/sales_order_base.html:236 part/models.py:1307
+#: part/templates/part/part_base.html:407
#: report/templates/report/inventree_build_order_report.html:158
#: templates/InvenTree/settings/settings_staff_js.html:150
-#: templates/js/translated/build.js:2391
-#: templates/js/translated/purchase_order.js:1833
+#: templates/js/translated/build.js:2394
+#: templates/js/translated/purchase_order.js:1817
#: templates/js/translated/return_order.js:358
#: templates/js/translated/table_filters.js:551
msgid "Responsible"
msgstr "Ansvarlig"
-#: build/models.py:371
+#: build/models.py:370
msgid "User or group responsible for this build order"
msgstr "Bruker eller gruppe ansvarlig for produksjonsordren"
-#: build/models.py:376 build/templates/build/detail.html:108
+#: build/models.py:375 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:172
-#: order/templates/order/return_order_base.html:148
-#: order/templates/order/sales_order_base.html:187
-#: part/templates/part/part_base.html:392 stock/models.py:855
-#: stock/templates/stock/item_base.html:200
-#: templates/js/translated/company.js:1019
+#: company/templates/company/supplier_part.html:195
+#: order/templates/order/order_base.html:181
+#: order/templates/order/return_order_base.html:149
+#: order/templates/order/sales_order_base.html:188
+#: part/templates/part/part_base.html:400 stock/models.py:932
+#: stock/templates/stock/item_base.html:197
+#: templates/js/translated/company.js:1020
msgid "External Link"
msgstr "Ekstern lenke"
-#: build/models.py:377 common/models.py:3273 part/models.py:1058
-#: stock/models.py:855
+#: build/models.py:376 common/models.py:3334 part/models.py:1119
+#: stock/models.py:932
msgid "Link to external URL"
msgstr "Lenke til ekstern URL"
-#: build/models.py:381
+#: build/models.py:380
msgid "Build Priority"
msgstr "Produksjonsprioritet"
-#: build/models.py:384
+#: build/models.py:383
msgid "Priority of this build order"
msgstr "Produksjonsordrens prioritet"
-#: build/models.py:391 common/models.py:135 common/models.py:149
-#: order/admin.py:18 order/api.py:128 order/models.py:297
+#: build/models.py:390 common/models.py:138 common/models.py:152
+#: order/admin.py:18 order/api.py:126 order/models.py:304
#: templates/InvenTree/settings/settings_staff_js.html:146
-#: templates/js/translated/build.js:2316
-#: templates/js/translated/purchase_order.js:1780
+#: templates/js/translated/build.js:2319
+#: templates/js/translated/purchase_order.js:1764
#: templates/js/translated/return_order.js:317
-#: templates/js/translated/sales_order.js:842
+#: templates/js/translated/sales_order.js:801
#: templates/js/translated/table_filters.js:47
#: templates/project_code_data.html:6
msgid "Project Code"
msgstr "Prosjektkode"
-#: build/models.py:392
+#: build/models.py:391
msgid "Project code for this build order"
msgstr "Prosjektkode for denne produksjonsordren"
-#: build/models.py:651 build/models.py:778
+#: build/models.py:651 build/models.py:779
msgid "Failed to offload task to complete build allocations"
msgstr "Kunne ikke delegere bort oppgaven for å fullføre tildelinger"
@@ -1110,610 +1129,619 @@ msgstr "Produksjonsordre {build} er fullført"
msgid "A build order has been completed"
msgstr "En produksjonsordre er fullført"
-#: build/models.py:967 build/models.py:1055
+#: build/models.py:858 build/serializers.py:393
+msgid "Serial numbers must be provided for trackable parts"
+msgstr "Serienumre må angis for sporbare deler"
+
+#: build/models.py:969 build/models.py:1058
msgid "No build output specified"
msgstr "Ingen produksjonsartikkel spesifisert"
-#: build/models.py:970
+#: build/models.py:972
msgid "Build output is already completed"
msgstr "Produksjonsartikkelen er allerede fullført"
-#: build/models.py:973
+#: build/models.py:975
msgid "Build output does not match Build Order"
msgstr "Produksjonsartikkelen samsvarer ikke med produksjonsordren"
-#: build/models.py:1059 build/serializers.py:235 build/serializers.py:284
-#: build/serializers.py:915 order/models.py:564 order/serializers.py:499
-#: order/serializers.py:665 part/serializers.py:1569 part/serializers.py:1999
-#: stock/models.py:700 stock/models.py:1520 stock/serializers.py:669
+#: build/models.py:1062 build/serializers.py:282 build/serializers.py:331
+#: build/serializers.py:959 order/models.py:586 order/serializers.py:584
+#: order/serializers.py:750 part/serializers.py:1627 part/serializers.py:2060
+#: stock/models.py:777 stock/models.py:1609 stock/serializers.py:696
msgid "Quantity must be greater than zero"
msgstr "Mengden må være større enn null"
-#: build/models.py:1064 build/serializers.py:240
+#: build/models.py:1067 build/serializers.py:287
msgid "Quantity cannot be greater than the output quantity"
msgstr "Kvantitet kan ikke være større enn utgangsantallet"
-#: build/models.py:1124 build/serializers.py:563
+#: build/models.py:1127 build/serializers.py:607
#, python-brace-format
msgid "Build output {serial} has not passed all required tests"
msgstr "Produksjonsartikkel {serial} har ikke bestått alle påkrevde tester"
-#: build/models.py:1465
+#: build/models.py:1482
msgid "Build Order Line Item"
msgstr "Produksjonsartikkel"
-#: build/models.py:1490
+#: build/models.py:1507
msgid "Build object"
msgstr "Produksjonsobjekt"
-#: build/models.py:1504 build/models.py:1760 build/serializers.py:222
-#: build/serializers.py:269 build/serializers.py:1295
-#: build/templates/build/build_base.html:110
-#: build/templates/build/detail.html:34 common/models.py:2579
-#: order/models.py:1356 order/models.py:2041 order/serializers.py:1460
+#: build/models.py:1521 build/models.py:1787 build/serializers.py:269
+#: build/serializers.py:316 build/serializers.py:1349
+#: build/templates/build/build_base.html:111
+#: build/templates/build/detail.html:34 common/models.py:2643
+#: order/models.py:1373 order/models.py:2074 order/serializers.py:1586
#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:413
-#: part/forms.py:48 part/models.py:3284 part/models.py:4253
-#: part/templates/part/part_pricing.html:16
+#: part/forms.py:48 part/models.py:3335 part/models.py:4310
+#: part/serializers.py:265 part/templates/part/part_pricing.html:16
#: part/templates/part/upload_bom.html:53
#: report/templates/report/inventree_bill_of_materials_report.html:138
#: report/templates/report/inventree_build_order_report.html:113
#: report/templates/report/inventree_purchase_order_report.html:29
#: report/templates/report/inventree_sales_order_report.html:29
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: report/templates/report/inventree_sales_order_shipment_report.html:49
#: report/templates/report/inventree_stock_location_report.html:104
#: report/templates/report/inventree_test_report.html:90
-#: report/templates/report/inventree_test_report.html:169 stock/admin.py:159
-#: stock/serializers.py:127 stock/serializers.py:167 stock/serializers.py:660
-#: stock/templates/stock/item_base.html:287
-#: stock/templates/stock/item_base.html:295
-#: stock/templates/stock/item_base.html:342
+#: report/templates/report/inventree_test_report.html:169 stock/admin.py:160
+#: stock/serializers.py:128 stock/serializers.py:168 stock/serializers.py:687
+#: stock/templates/stock/item_base.html:284
+#: stock/templates/stock/item_base.html:292
+#: stock/templates/stock/item_base.html:339
#: templates/email/build_order_completed.html:18
#: templates/js/translated/barcode.js:579 templates/js/translated/bom.js:771
-#: templates/js/translated/bom.js:981 templates/js/translated/build.js:522
-#: templates/js/translated/build.js:737 templates/js/translated/build.js:1542
-#: templates/js/translated/build.js:1919 templates/js/translated/build.js:2529
-#: templates/js/translated/company.js:1818
-#: templates/js/translated/model_renderers.js:237
+#: templates/js/translated/bom.js:981 templates/js/translated/build.js:525
+#: templates/js/translated/build.js:740 templates/js/translated/build.js:1545
+#: templates/js/translated/build.js:1922 templates/js/translated/build.js:2536
+#: templates/js/translated/company.js:1819
+#: templates/js/translated/model_renderers.js:240
#: templates/js/translated/order.js:329 templates/js/translated/part.js:968
-#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3360
+#: templates/js/translated/part.js:1818 templates/js/translated/part.js:3376
#: templates/js/translated/pricing.js:381
#: templates/js/translated/pricing.js:474
#: templates/js/translated/pricing.js:522
#: templates/js/translated/pricing.js:616
-#: templates/js/translated/purchase_order.js:754
-#: templates/js/translated/purchase_order.js:1922
-#: templates/js/translated/purchase_order.js:2141
-#: templates/js/translated/sales_order.js:317
-#: templates/js/translated/sales_order.js:1235
-#: templates/js/translated/sales_order.js:1554
-#: templates/js/translated/sales_order.js:1644
-#: templates/js/translated/sales_order.js:1734
-#: templates/js/translated/sales_order.js:1860
+#: templates/js/translated/purchase_order.js:737
+#: templates/js/translated/purchase_order.js:1906
+#: templates/js/translated/purchase_order.js:2125
+#: templates/js/translated/sales_order.js:1201
+#: templates/js/translated/sales_order.js:1520
+#: templates/js/translated/sales_order.js:1625
+#: templates/js/translated/sales_order.js:1715
+#: templates/js/translated/sales_order.js:1841
#: templates/js/translated/stock.js:570 templates/js/translated/stock.js:708
-#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3105
-#: templates/js/translated/stock.js:3188
+#: templates/js/translated/stock.js:879 templates/js/translated/stock.js:3106
+#: templates/js/translated/stock.js:3189
msgid "Quantity"
msgstr "Antall"
-#: build/models.py:1505
+#: build/models.py:1522
msgid "Required quantity for build order"
msgstr "Påkrevd antall for produksjonsordre"
-#: build/models.py:1585
+#: build/models.py:1602
msgid "Build item must specify a build output, as master part is marked as trackable"
msgstr "Produksjonselement må spesifisere en produksjonsartikkel, da master-del er merket som sporbar"
-#: build/models.py:1594
+#: build/models.py:1611
#, 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:1604 order/models.py:1992
+#: build/models.py:1628 order/models.py:2025
msgid "Stock item is over-allocated"
msgstr "Lagervaren er overtildelt"
-#: build/models.py:1610 order/models.py:1995
+#: build/models.py:1634 order/models.py:2028
msgid "Allocation quantity must be greater than zero"
msgstr "Tildelingsantall må være større enn null"
-#: build/models.py:1616
+#: build/models.py:1640
msgid "Quantity must be 1 for serialized stock"
msgstr "Mengden må være 1 for serialisert lagervare"
-#: build/models.py:1675
+#: build/models.py:1699
msgid "Selected stock item does not match BOM line"
msgstr "Valgt lagervare samsvarer ikke med BOM-linjen"
-#: build/models.py:1747 build/serializers.py:895 order/serializers.py:1297
-#: order/serializers.py:1318 stock/models.py:376 stock/serializers.py:93
-#: stock/serializers.py:763 stock/serializers.py:1281 stock/serializers.py:1393
-#: 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:1918
-#: templates/js/translated/sales_order.js:301
-#: templates/js/translated/sales_order.js:1234
-#: templates/js/translated/sales_order.js:1535
-#: templates/js/translated/sales_order.js:1540
-#: templates/js/translated/sales_order.js:1641
-#: templates/js/translated/sales_order.js:1728
+#: build/models.py:1774 build/serializers.py:939 order/serializers.py:1423
+#: order/serializers.py:1444
+#: report/templates/report/inventree_sales_order_shipment_report.html:29
+#: stock/models.py:382 stock/serializers.py:94 stock/serializers.py:794
+#: stock/serializers.py:1312 stock/serializers.py:1424
+#: stock/templates/stock/item_base.html:11
+#: stock/templates/stock/item_base.html:24
+#: stock/templates/stock/item_base.html:191
+#: templates/js/translated/build.js:1921
+#: templates/js/translated/sales_order.js:1200
+#: templates/js/translated/sales_order.js:1501
+#: templates/js/translated/sales_order.js:1506
+#: templates/js/translated/sales_order.js:1622
+#: templates/js/translated/sales_order.js:1709
#: templates/js/translated/stock.js:683 templates/js/translated/stock.js:849
-#: templates/js/translated/stock.js:3061
+#: templates/js/translated/stock.js:3062
msgid "Stock Item"
msgstr "Lagervare"
-#: build/models.py:1748
+#: build/models.py:1775
msgid "Source stock item"
msgstr "Kildelagervare"
-#: build/models.py:1761
+#: build/models.py:1788
msgid "Stock quantity to allocate to build"
msgstr "Lagerantall å tildele til produksjonen"
-#: build/models.py:1769
+#: build/models.py:1796
msgid "Install into"
msgstr "Monteres i"
-#: build/models.py:1770
+#: build/models.py:1797
msgid "Destination stock item"
msgstr "Lagervare for montering"
-#: build/serializers.py:91
+#: build/serializers.py:108
msgid "Build Level"
msgstr ""
-#: build/serializers.py:99 build/serializers.py:1190 build/serializers.py:1279
-#: part/admin.py:41 part/admin.py:408 part/models.py:4102 part/stocktake.py:219
-#: stock/admin.py:156
+#: build/serializers.py:116 build/serializers.py:1235 build/serializers.py:1331
+#: part/admin.py:41 part/admin.py:408 part/models.py:4160 part/stocktake.py:219
+#: stock/admin.py:157
msgid "Part Name"
msgstr "Delnavn"
-#: build/serializers.py:111
+#: build/serializers.py:128
msgid "Project Code Label"
msgstr "Etikett for prosjektkode"
-#: build/serializers.py:172 build/serializers.py:924
-#: templates/js/translated/build.js:1042 templates/js/translated/build.js:1495
+#: build/serializers.py:134
+msgid "Create Child Builds"
+msgstr ""
+
+#: build/serializers.py:135
+msgid "Automatically generate child build orders"
+msgstr ""
+
+#: build/serializers.py:219 build/serializers.py:968
+#: templates/js/translated/build.js:1045 templates/js/translated/build.js:1498
msgid "Build Output"
msgstr "Produksjonsartikkel"
-#: build/serializers.py:184
+#: build/serializers.py:231
msgid "Build output does not match the parent build"
msgstr "Produksjonsartikkel samsvarer ikke med overordnet produksjon"
-#: build/serializers.py:188
+#: build/serializers.py:235
msgid "Output part does not match BuildOrder part"
msgstr "Resultatdel samsvarer ikke med produksjonsordredel"
-#: build/serializers.py:192
+#: build/serializers.py:239
msgid "This build output has already been completed"
msgstr "Denne produksjonsartikkelen er allerede fullført"
-#: build/serializers.py:203
+#: build/serializers.py:250
msgid "This build output is not fully allocated"
msgstr "Denne produksjonsartikkelen er ikke fullt tildelt"
-#: build/serializers.py:223 build/serializers.py:270
+#: build/serializers.py:270 build/serializers.py:317
msgid "Enter quantity for build output"
msgstr "Angi antall for produksjonsartikkel"
-#: build/serializers.py:291
+#: build/serializers.py:338
msgid "Integer quantity required for trackable parts"
msgstr "Heltallsverdi kreves for sporbare deler"
-#: build/serializers.py:294
+#: build/serializers.py:341
msgid "Integer quantity required, as the bill of materials contains trackable parts"
msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler"
-#: build/serializers.py:309 order/serializers.py:678 order/serializers.py:1464
-#: stock/serializers.py:680 templates/js/translated/purchase_order.js:1154
+#: build/serializers.py:356 order/serializers.py:763 order/serializers.py:1590
+#: stock/serializers.py:707 templates/js/translated/purchase_order.js:1137
#: templates/js/translated/stock.js:373 templates/js/translated/stock.js:571
msgid "Serial Numbers"
msgstr "Serienummer"
-#: build/serializers.py:310
+#: build/serializers.py:357
msgid "Enter serial numbers for build outputs"
msgstr "Angi serienummer for produksjonsartikler"
-#: build/serializers.py:315 build/serializers.py:456 build/serializers.py:528
-#: order/serializers.py:654 order/serializers.py:778 order/serializers.py:1781
-#: part/serializers.py:1212 stock/serializers.py:102 stock/serializers.py:691
-#: stock/serializers.py:851 stock/serializers.py:977 stock/serializers.py:1425
-#: stock/serializers.py:1681 stock/templates/stock/item_base.html:394
+#: build/serializers.py:362 build/serializers.py:500 build/serializers.py:572
+#: order/serializers.py:739 order/serializers.py:880 order/serializers.py:1933
+#: part/serializers.py:1265 stock/serializers.py:103 stock/serializers.py:718
+#: stock/serializers.py:882 stock/serializers.py:1008 stock/serializers.py:1456
+#: stock/serializers.py:1712 stock/templates/stock/item_base.html:391
#: templates/js/translated/barcode.js:578
-#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1032
-#: templates/js/translated/build.js:1174 templates/js/translated/build.js:2544
-#: templates/js/translated/purchase_order.js:1210
-#: templates/js/translated/purchase_order.js:1320
-#: templates/js/translated/sales_order.js:1547
-#: templates/js/translated/sales_order.js:1655
-#: templates/js/translated/sales_order.js:1663
-#: templates/js/translated/sales_order.js:1742
+#: templates/js/translated/barcode.js:826 templates/js/translated/build.js:1035
+#: templates/js/translated/build.js:1177 templates/js/translated/build.js:2551
+#: templates/js/translated/purchase_order.js:1193
+#: templates/js/translated/purchase_order.js:1303
+#: templates/js/translated/sales_order.js:1513
+#: templates/js/translated/sales_order.js:1636
+#: templates/js/translated/sales_order.js:1644
+#: templates/js/translated/sales_order.js:1723
#: templates/js/translated/stock.js:684 templates/js/translated/stock.js:850
-#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2286
-#: templates/js/translated/stock.js:2955
+#: templates/js/translated/stock.js:1067 templates/js/translated/stock.js:2287
+#: templates/js/translated/stock.js:2956
msgid "Location"
msgstr "Plassering"
-#: build/serializers.py:316
+#: build/serializers.py:363
msgid "Stock location for build output"
msgstr "Lagerplassering for produksjonsartikkel"
-#: build/serializers.py:330
+#: build/serializers.py:377
msgid "Auto Allocate Serial Numbers"
msgstr "Automatisk tildeling av serienummer"
-#: build/serializers.py:331
+#: build/serializers.py:378
msgid "Automatically allocate required items with matching serial numbers"
msgstr "Automatisk tildeling av nødvendige artikler med tilsvarende serienummer"
-#: build/serializers.py:346
-msgid "Serial numbers must be provided for trackable parts"
-msgstr "Serienumre må angis for sporbare deler"
-
-#: build/serializers.py:371 stock/api.py:1031
+#: build/serializers.py:415 order/serializers.py:858 stock/api.py:1017
+#: stock/models.py:1632
msgid "The following serial numbers already exist or are invalid"
msgstr "Følgende serienummer finnes allerede eller er ugyldige"
-#: build/serializers.py:418 build/serializers.py:480 build/serializers.py:569
+#: build/serializers.py:462 build/serializers.py:524 build/serializers.py:613
msgid "A list of build outputs must be provided"
msgstr "En liste over produksjonsartikler må oppgis"
-#: build/serializers.py:457
+#: build/serializers.py:501
msgid "Stock location for scrapped outputs"
msgstr "Lagerplassering for skrotede produksjonsartikler"
-#: build/serializers.py:463
+#: build/serializers.py:507
msgid "Discard Allocations"
msgstr "Forkast tildelinger"
-#: build/serializers.py:464
+#: build/serializers.py:508
msgid "Discard any stock allocations for scrapped outputs"
msgstr "Forkast tildelinger fra skrotede produksjonsartikler"
-#: build/serializers.py:469
+#: build/serializers.py:513
msgid "Reason for scrapping build output(s)"
msgstr "Grunn for skroting av produksjonsartikler"
-#: build/serializers.py:529
+#: build/serializers.py:573
msgid "Location for completed build outputs"
msgstr "Plassering for ferdige produksjonsartikler"
-#: build/serializers.py:535 build/templates/build/build_base.html:159
-#: build/templates/build/detail.html:62 order/models.py:476
-#: order/models.py:1002 order/models.py:2159 order/serializers.py:686
-#: stock/admin.py:164 stock/serializers.py:1028 stock/serializers.py:1569
-#: stock/templates/stock/item_base.html:427
-#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2363
-#: templates/js/translated/purchase_order.js:1371
-#: templates/js/translated/purchase_order.js:1792
+#: build/serializers.py:579 build/templates/build/build_base.html:160
+#: build/templates/build/detail.html:62 order/models.py:488
+#: order/models.py:1029 order/models.py:2198 order/serializers.py:771
+#: stock/admin.py:165 stock/serializers.py:581 stock/serializers.py:1059
+#: stock/serializers.py:1600 stock/templates/stock/item_base.html:424
+#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2366
+#: templates/js/translated/purchase_order.js:1354
+#: templates/js/translated/purchase_order.js:1776
#: templates/js/translated/return_order.js:330
-#: templates/js/translated/sales_order.js:855
-#: templates/js/translated/stock.js:2261 templates/js/translated/stock.js:3079
-#: templates/js/translated/stock.js:3204
+#: templates/js/translated/sales_order.js:814
+#: templates/js/translated/stock.js:2262 templates/js/translated/stock.js:3080
+#: templates/js/translated/stock.js:3205
msgid "Status"
msgstr "Status"
-#: build/serializers.py:541
+#: build/serializers.py:585
msgid "Accept Incomplete Allocation"
msgstr "Godta ufullstendig tildeling"
-#: build/serializers.py:542
+#: build/serializers.py:586
msgid "Complete outputs if stock has not been fully allocated"
msgstr "Fullfør artikler dersom lagerbeholdning ikke er fullt tildelt"
-#: build/serializers.py:654
+#: build/serializers.py:698
msgid "Consume Allocated Stock"
msgstr "Bruk tildelt lagerbeholdning"
-#: build/serializers.py:655
+#: build/serializers.py:699
msgid "Consume any stock which has already been allocated to this build"
msgstr "Bruk all lagerbeholdning som allerede er tildelt denne produksjonen"
-#: build/serializers.py:661
+#: build/serializers.py:705
msgid "Remove Incomplete Outputs"
msgstr "Fjern ufullstendige artikler"
-#: build/serializers.py:662
+#: build/serializers.py:706
msgid "Delete any build outputs which have not been completed"
msgstr "Slett alle produksjonsartikler som ikke er fullført"
-#: build/serializers.py:689
+#: build/serializers.py:733
msgid "Not permitted"
msgstr "Ikke tillatt"
-#: build/serializers.py:690
+#: build/serializers.py:734
msgid "Accept as consumed by this build order"
msgstr "Godta som brukt av denne produksjonsordren"
-#: build/serializers.py:691
+#: build/serializers.py:735
msgid "Deallocate before completing this build order"
msgstr "Fjern tildeling før produksjonsordren fullføres"
-#: build/serializers.py:721
+#: build/serializers.py:765
msgid "Overallocated Stock"
msgstr "Overtildelt lagerbeholdning"
-#: build/serializers.py:723
+#: build/serializers.py:767
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:733
+#: build/serializers.py:777
msgid "Some stock items have been overallocated"
msgstr "Noen lagervarer har blitt overtildelt"
-#: build/serializers.py:738
+#: build/serializers.py:782
msgid "Accept Unallocated"
msgstr "Godta ikke tildelt"
-#: build/serializers.py:739
+#: build/serializers.py:783
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:749 templates/js/translated/build.js:316
+#: build/serializers.py:793 templates/js/translated/build.js:319
msgid "Required stock has not been fully allocated"
msgstr "Nøvendig lagerbeholdning er ikke fullt tildelt"
-#: build/serializers.py:754 order/serializers.py:345 order/serializers.py:1365
+#: build/serializers.py:798 order/serializers.py:430 order/serializers.py:1491
msgid "Accept Incomplete"
msgstr "Godta uferdig"
-#: build/serializers.py:755
+#: build/serializers.py:799
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:765 templates/js/translated/build.js:320
+#: build/serializers.py:809 templates/js/translated/build.js:323
msgid "Required build quantity has not been completed"
msgstr "Nødvendig produksjonsmengde er ikke nådd"
-#: build/serializers.py:774
+#: build/serializers.py:818
msgid "Build order has open child build orders"
msgstr ""
-#: build/serializers.py:777
+#: build/serializers.py:821
msgid "Build order must be in production state"
msgstr ""
-#: build/serializers.py:780 templates/js/translated/build.js:304
+#: build/serializers.py:824 templates/js/translated/build.js:307
msgid "Build order has incomplete outputs"
msgstr "Produksjonsordren har uferdige artikler"
-#: build/serializers.py:818
+#: build/serializers.py:862
msgid "Build Line"
msgstr "Produksjonslinje"
-#: build/serializers.py:828
+#: build/serializers.py:872
msgid "Build output"
msgstr "Produksjonsartikkel"
-#: build/serializers.py:836
+#: build/serializers.py:880
msgid "Build output must point to the same build"
msgstr "Produksjonsartikkel må peke til samme produksjon"
-#: build/serializers.py:872
+#: build/serializers.py:916
msgid "Build Line Item"
msgstr "Produksjonsartikkel"
-#: build/serializers.py:886
+#: build/serializers.py:930
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:901 stock/serializers.py:1294
+#: build/serializers.py:945 stock/serializers.py:1325
msgid "Item must be in stock"
msgstr "Artikkelen må være på lager"
-#: build/serializers.py:949 order/serializers.py:1351
+#: build/serializers.py:993 order/serializers.py:1477
#, python-brace-format
msgid "Available quantity ({q}) exceeded"
msgstr "Tilgjengelig antall ({q}) overskredet"
-#: build/serializers.py:955
+#: build/serializers.py:999
msgid "Build output must be specified for allocation of tracked parts"
msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler"
-#: build/serializers.py:962
+#: build/serializers.py:1006
msgid "Build output cannot be specified for allocation of untracked parts"
msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler"
-#: build/serializers.py:986 order/serializers.py:1610
+#: build/serializers.py:1030 order/serializers.py:1750
msgid "Allocation items must be provided"
msgstr "Tildelingsartikler må oppgis"
-#: build/serializers.py:1049
+#: build/serializers.py:1093
msgid "Stock location where parts are to be sourced (leave blank to take from any location)"
msgstr "Lagerplassering hvor deler skal hentes (la stå tomt for å ta fra alle plasseringer)"
-#: build/serializers.py:1057
+#: build/serializers.py:1101
msgid "Exclude Location"
msgstr "Eksluderer plassering"
-#: build/serializers.py:1058
+#: build/serializers.py:1102
msgid "Exclude stock items from this selected location"
msgstr "Ekskluder lagervarer fra denne valgte plasseringen"
-#: build/serializers.py:1063
+#: build/serializers.py:1107
msgid "Interchangeable Stock"
msgstr "Utskiftbar lagerbeholdning"
-#: build/serializers.py:1064
+#: build/serializers.py:1108
msgid "Stock items in multiple locations can be used interchangeably"
msgstr "Lagervarer ved flere plasseringer kan brukes om hverandre"
-#: build/serializers.py:1069
+#: build/serializers.py:1113
msgid "Substitute Stock"
msgstr "Erstatning-lagerbeholdning"
-#: build/serializers.py:1070
+#: build/serializers.py:1114
msgid "Allow allocation of substitute parts"
msgstr "Tilatt tildelling av erstatningsdeler"
-#: build/serializers.py:1075
+#: build/serializers.py:1119
msgid "Optional Items"
msgstr "Valgfrie artikler"
-#: build/serializers.py:1076
+#: build/serializers.py:1120
msgid "Allocate optional BOM items to build order"
msgstr "Tildel valgfrie BOM-artikler til produksjonsordre"
-#: build/serializers.py:1098
+#: build/serializers.py:1143
msgid "Failed to start auto-allocation task"
msgstr "Kunne ikke starte auto-tideling"
-#: build/serializers.py:1181
+#: build/serializers.py:1226 stock/serializers.py:585
msgid "Supplier Part Number"
msgstr "Leverandørens delnummer"
-#: build/serializers.py:1182 company/models.py:506
+#: build/serializers.py:1227 company/models.py:503 stock/serializers.py:591
msgid "Manufacturer Part Number"
msgstr "Produsentens varenummer"
-#: build/serializers.py:1183 stock/admin.py:53 stock/admin.py:175
-#: stock/serializers.py:457
+#: build/serializers.py:1228 stock/admin.py:53 stock/admin.py:176
+#: stock/serializers.py:467
msgid "Location Name"
msgstr "Plasseringsnavn"
-#: build/serializers.py:1184
+#: build/serializers.py:1229 build/serializers.py:1327
msgid "Build Reference"
msgstr "Produksjonsreferanse"
-#: build/serializers.py:1185
+#: build/serializers.py:1230
msgid "BOM Reference"
msgstr "BOM-referanse"
-#: build/serializers.py:1186 company/models.py:852
-#: company/templates/company/supplier_part.html:160 order/serializers.py:690
-#: stock/admin.py:228 stock/models.py:818 stock/serializers.py:1579
-#: stock/templates/stock/item_base.html:240
-#: templates/js/translated/company.js:1646
-#: templates/js/translated/purchase_order.js:1169
-#: templates/js/translated/purchase_order.js:1332
+#: build/serializers.py:1231 company/models.py:849
+#: company/templates/company/supplier_part.html:161 order/serializers.py:775
+#: stock/admin.py:229 stock/models.py:895 stock/serializers.py:1610
+#: stock/templates/stock/item_base.html:237
+#: templates/js/translated/company.js:1647
+#: templates/js/translated/purchase_order.js:1152
+#: templates/js/translated/purchase_order.js:1315
#: templates/js/translated/stock.js:1214 templates/js/translated/stock.js:1246
-#: templates/js/translated/stock.js:2509
+#: templates/js/translated/stock.js:2510
msgid "Packaging"
msgstr "Emballasje"
-#: build/serializers.py:1189 part/admin.py:39 part/admin.py:398
-#: part/models.py:4101 part/stocktake.py:218 stock/admin.py:152
+#: build/serializers.py:1234 part/admin.py:39 part/admin.py:398
+#: part/models.py:4159 part/stocktake.py:218 stock/admin.py:153
msgid "Part ID"
msgstr "Del-ID"
-#: build/serializers.py:1191 build/serializers.py:1280 part/admin.py:402
-#: part/models.py:4103
+#: build/serializers.py:1236 build/serializers.py:1332 part/admin.py:402
+#: part/models.py:4161
msgid "Part IPN"
msgstr "Del -IPN"
-#: build/serializers.py:1192 build/serializers.py:1282 part/admin.py:45
+#: build/serializers.py:1237 build/serializers.py:1334 part/admin.py:45
#: part/stocktake.py:220
msgid "Part Description"
msgstr "Delbeskrivelse"
-#: build/serializers.py:1195
+#: build/serializers.py:1240
msgid "BOM Part ID"
msgstr ""
-#: build/serializers.py:1196
+#: build/serializers.py:1241
msgid "BOM Part Name"
msgstr ""
-#: build/serializers.py:1199
+#: build/serializers.py:1244
#: report/templates/report/inventree_return_order_report.html:25
-#: report/templates/report/inventree_test_report.html:88 stock/models.py:845
-#: stock/serializers.py:151 stock/templates/stock/item_base.html:311
-#: templates/js/translated/build.js:520 templates/js/translated/build.js:1540
-#: templates/js/translated/build.js:2527
-#: templates/js/translated/model_renderers.js:231
+#: report/templates/report/inventree_sales_order_shipment_report.html:45
+#: report/templates/report/inventree_test_report.html:88 stock/models.py:922
+#: stock/serializers.py:152 stock/templates/stock/item_base.html:308
+#: templates/js/translated/build.js:523 templates/js/translated/build.js:1543
+#: templates/js/translated/build.js:2534
+#: templates/js/translated/model_renderers.js:234
#: templates/js/translated/return_order.js:539
#: templates/js/translated/return_order.js:722
-#: templates/js/translated/sales_order.js:315
-#: templates/js/translated/sales_order.js:1647
-#: templates/js/translated/sales_order.js:1732
+#: templates/js/translated/sales_order.js:1628
+#: templates/js/translated/sales_order.js:1713
#: templates/js/translated/stock.js:602
msgid "Serial Number"
msgstr "Serienummer"
-#: build/serializers.py:1212 stock/serializers.py:593
-#: templates/js/translated/build.js:1017 templates/js/translated/build.js:1164
-#: templates/js/translated/build.js:2516
+#: build/serializers.py:1257 stock/serializers.py:620
+#: templates/js/translated/build.js:1020 templates/js/translated/build.js:1167
+#: templates/js/translated/build.js:2523
msgid "Allocated Quantity"
msgstr "Tildelt antall"
-#: build/serializers.py:1213 stock/templates/stock/item_base.html:340
+#: build/serializers.py:1258 stock/templates/stock/item_base.html:337
msgid "Available Quantity"
msgstr "Tilgjengelig antall"
-#: build/serializers.py:1283
+#: build/serializers.py:1335
msgid "Part Category ID"
msgstr "Delkategori-ID"
-#: build/serializers.py:1284
+#: build/serializers.py:1336
msgid "Part Category Name"
msgstr "Delkategorinavn"
-#: build/serializers.py:1291 common/models.py:1513 part/admin.py:113
-#: part/models.py:1166 templates/js/translated/table_filters.js:150
+#: build/serializers.py:1345 common/models.py:1582 part/admin.py:113
+#: part/models.py:1227 templates/js/translated/build.js:2738
+#: templates/js/translated/table_filters.js:150
#: templates/js/translated/table_filters.js:230
#: templates/js/translated/table_filters.js:783
msgid "Trackable"
msgstr "Sporbar"
-#: build/serializers.py:1292
+#: build/serializers.py:1346
msgid "Inherited"
msgstr "Nedarvet"
-#: build/serializers.py:1293 part/models.py:4313
+#: build/serializers.py:1347 part/models.py:4370
#: part/templates/part/upload_bom.html:56 templates/js/translated/bom.js:1046
-#: templates/js/translated/build.js:2711
+#: templates/js/translated/build.js:2720
msgid "Allow Variants"
msgstr "Tillat Varianter"
-#: build/serializers.py:1297 part/models.py:4110 part/models.py:4584
+#: build/serializers.py:1351 part/models.py:4168 part/models.py:4646
#: stock/api.py:794
msgid "BOM Item"
msgstr "BOM-artikkel"
-#: build/serializers.py:1306 build/templates/build/detail.html:236
+#: build/serializers.py:1370 build/templates/build/detail.html:236
#: build/templates/build/sidebar.html:16 templates/js/translated/index.js:130
msgid "Allocated Stock"
msgstr "Tildelt lagerbeholdning"
-#: build/serializers.py:1311 order/serializers.py:1175 part/admin.py:132
-#: part/bom.py:181 part/serializers.py:899 part/serializers.py:1602
-#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208
-#: templates/js/translated/build.js:2804 templates/js/translated/part.js:712
+#: build/serializers.py:1375 order/serializers.py:1209 part/admin.py:132
+#: part/bom.py:186 part/serializers.py:951 part/serializers.py:1660
+#: part/templates/part/part_base.html:211 templates/js/translated/bom.js:1208
+#: templates/js/translated/build.js:2822 templates/js/translated/part.js:712
#: templates/js/translated/part.js:2155
#: templates/js/translated/table_filters.js:177
msgid "On Order"
msgstr "I bestilling"
-#: build/serializers.py:1316 order/serializers.py:1176 part/serializers.py:1604
-#: templates/js/translated/build.js:2808
+#: build/serializers.py:1380 order/serializers.py:1210 part/serializers.py:1662
+#: templates/js/translated/build.js:2826
#: templates/js/translated/table_filters.js:367
msgid "In Production"
msgstr "I produksjon"
-#: build/serializers.py:1321 part/bom.py:180 part/serializers.py:1629
-#: part/templates/part/part_base.html:192
-#: templates/js/translated/sales_order.js:1929
-msgid "Available Stock"
-msgstr "Tilgjengelig lagerbeholdning"
-
-#: build/serializers.py:1325
-msgid "Available Substitute Stock"
-msgstr "Tilgjengelige erstatningsvarer"
-
-#: build/serializers.py:1326
-msgid "Available Variant Stock"
-msgstr "Tilgjengelige variantvarer"
-
-#: build/serializers.py:1327
-msgid "Total Available Stock"
-msgstr "Totalt tilgjengelig lagerbeholdning"
-
-#: build/serializers.py:1328 part/serializers.py:906
+#: build/serializers.py:1384 part/serializers.py:958
msgid "External Stock"
msgstr "Ekstern lagerbeholdning"
-#: build/status_codes.py:11 generic/states/tests.py:17 order/status_codes.py:12
-#: order/status_codes.py:42 order/status_codes.py:74 order/status_codes.py:98
+#: build/serializers.py:1385 part/bom.py:185 part/serializers.py:1687
+#: part/templates/part/part_base.html:193
+#: templates/js/translated/sales_order.js:1910
+msgid "Available Stock"
+msgstr "Tilgjengelig lagerbeholdning"
+
+#: build/serializers.py:1386
+msgid "Available Substitute Stock"
+msgstr "Tilgjengelige erstatningsvarer"
+
+#: build/serializers.py:1387
+msgid "Available Variant Stock"
+msgstr "Tilgjengelige variantvarer"
+
+#: build/status_codes.py:11 generic/states/tests.py:21
+#: generic/states/tests.py:131 order/status_codes.py:12
+#: order/status_codes.py:44 order/status_codes.py:76 order/status_codes.py:102
#: templates/js/translated/table_filters.js:601
msgid "Pending"
msgstr "Ventende"
@@ -1722,21 +1750,21 @@ msgstr "Ventende"
msgid "Production"
msgstr "Produksjon"
-#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:49
-#: order/status_codes.py:79
+#: build/status_codes.py:13 order/status_codes.py:14 order/status_codes.py:51
+#: order/status_codes.py:81
msgid "On Hold"
msgstr ""
-#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:51
-#: order/status_codes.py:82
+#: build/status_codes.py:14 order/status_codes.py:16 order/status_codes.py:53
+#: order/status_codes.py:84
msgid "Cancelled"
msgstr "Kansellert"
-#: build/status_codes.py:15 generic/states/tests.py:19 importer/models.py:509
-#: importer/status_codes.py:19 order/status_codes.py:15
-#: order/status_codes.py:50 order/status_codes.py:81
-#: order/templates/order/order_base.html:163
-#: order/templates/order/sales_order_base.html:168 report/models.py:443
+#: build/status_codes.py:15 generic/states/tests.py:23 importer/models.py:518
+#: importer/status_codes.py:27 order/status_codes.py:15
+#: order/status_codes.py:52 order/status_codes.py:83
+#: order/templates/order/order_base.html:172
+#: order/templates/order/sales_order_base.html:169 report/models.py:451
msgid "Complete"
msgstr "Fullført"
@@ -1744,165 +1772,162 @@ msgstr "Fullført"
msgid "Stock required for build order"
msgstr "Lagerbeholdning kreves for produksjonsordre"
-#: build/tasks.py:201
+#: build/tasks.py:260
msgid "Overdue Build Order"
msgstr "Forfalt produksjonsordre"
-#: build/tasks.py:206
+#: build/tasks.py:265
#, python-brace-format
msgid "Build order {bo} is now overdue"
msgstr "Produksjonsordre {bo} er nå forfalt"
-#: build/templates/build/build_base.html:18
+#: build/templates/build/build_base.html:19
msgid "Part thumbnail"
msgstr "Miniatyrbilde for del"
-#: 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:52
+#: build/templates/build/build_base.html:39
+#: company/templates/company/supplier_part.html:36
+#: order/templates/order/order_base.html:30
+#: order/templates/order/return_order_base.html:39
+#: order/templates/order/sales_order_base.html:39
+#: part/templates/part/part_base.html:42
+#: stock/templates/stock/item_base.html:41
+#: stock/templates/stock/location.html:53
#: templates/js/translated/filters.js:338
msgid "Barcode actions"
msgstr "Strekkodehandlinger"
-#: 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:54 templates/qr_button.html:1
+#: build/templates/build/build_base.html:43
+#: company/templates/company/supplier_part.html:40
+#: order/templates/order/order_base.html:34
+#: order/templates/order/return_order_base.html:43
+#: order/templates/order/sales_order_base.html:43
+#: part/templates/part/part_base.html:45
+#: stock/templates/stock/item_base.html:45
+#: stock/templates/stock/location.html:55 templates/qr_button.html:1
msgid "Show QR Code"
msgstr "Vis QR-kode"
-#: 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:56
+#: build/templates/build/build_base.html:46
+#: company/templates/company/supplier_part.html:42
+#: order/templates/order/order_base.html:37
+#: order/templates/order/return_order_base.html:46
+#: order/templates/order/sales_order_base.html:46
+#: part/templates/part/part_base.html:48
+#: stock/templates/stock/item_base.html:48
+#: stock/templates/stock/location.html:57
#: templates/js/translated/barcode.js:527
#: templates/js/translated/barcode.js:532
msgid "Unlink Barcode"
msgstr "Fjern strekkodekobling"
-#: 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:58
+#: build/templates/build/build_base.html:48
+#: company/templates/company/supplier_part.html:44
+#: order/templates/order/order_base.html:39
+#: order/templates/order/return_order_base.html:48
+#: order/templates/order/sales_order_base.html:48
+#: part/templates/part/part_base.html:50
+#: stock/templates/stock/item_base.html:50
+#: stock/templates/stock/location.html:59
msgid "Link Barcode"
msgstr "Koble mot strekkode"
-#: 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
+#: build/templates/build/build_base.html:57
+#: order/templates/order/order_base.html:47
+#: order/templates/order/return_order_base.html:56
+#: order/templates/order/sales_order_base.html:56
msgid "Print actions"
msgstr "Utskriftshandlinger"
-#: build/templates/build/build_base.html:60
+#: build/templates/build/build_base.html:61
msgid "Print build order report"
msgstr "Skriv ut produksjonsordrerapport"
-#: build/templates/build/build_base.html:67
+#: build/templates/build/build_base.html:68
msgid "Build actions"
msgstr "Produksjonshandlinger"
-#: build/templates/build/build_base.html:71
+#: build/templates/build/build_base.html:72
msgid "Edit Build"
msgstr "Rediger Produksjon"
-#: build/templates/build/build_base.html:73
+#: build/templates/build/build_base.html:74
msgid "Duplicate Build"
msgstr "Dupliser Produksjon"
-#: build/templates/build/build_base.html:76
+#: build/templates/build/build_base.html:77
msgid "Hold Build"
msgstr ""
-#: build/templates/build/build_base.html:79
+#: build/templates/build/build_base.html:80
msgid "Cancel Build"
msgstr "Kanseller produksjon"
-#: build/templates/build/build_base.html:82
+#: build/templates/build/build_base.html:83
msgid "Delete Build"
msgstr "Slett Produksjon"
-#: build/templates/build/build_base.html:87
-msgid "Isueue Build"
-msgstr ""
-
#: build/templates/build/build_base.html:88
+#: build/templates/build/build_base.html:89
msgid "Issue Build"
msgstr ""
-#: build/templates/build/build_base.html:91
#: build/templates/build/build_base.html:92
+#: build/templates/build/build_base.html:93
msgid "Complete Build"
msgstr "Fullfør Produksjon"
-#: build/templates/build/build_base.html:115
+#: build/templates/build/build_base.html:116
msgid "Build Description"
msgstr "Produksjonsbeskrivelse"
-#: build/templates/build/build_base.html:125
+#: build/templates/build/build_base.html:126
msgid "No build outputs have been created for this build order"
msgstr "Ingen produksjonsartikler har blitt opprettet for produksjonsordren"
-#: build/templates/build/build_base.html:132
+#: build/templates/build/build_base.html:133
msgid "Build Order is ready to mark as completed"
msgstr "Produksjonsordren er klar til å merkes som fullført"
-#: build/templates/build/build_base.html:137
+#: build/templates/build/build_base.html:138
msgid "Build Order cannot be completed as outstanding outputs remain"
msgstr "Produksjonsordren kan ikke fullføres på grunn av utestående artikler"
-#: build/templates/build/build_base.html:142
+#: build/templates/build/build_base.html:143
msgid "Required build quantity has not yet been completed"
msgstr "Nødvendig produksjonsantall er ikke oppnådd enda"
-#: build/templates/build/build_base.html:147
+#: build/templates/build/build_base.html:148
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:168
-#: build/templates/build/detail.html:138 order/models.py:308
-#: order/models.py:1391 order/serializers.py:174
-#: order/templates/order/order_base.html:191
-#: order/templates/order/return_order_base.html:167
-#: order/templates/order/sales_order_base.html:199
+#: build/templates/build/build_base.html:169
+#: build/templates/build/detail.html:138 order/models.py:315
+#: order/models.py:1408 order/serializers.py:254
+#: order/templates/order/order_base.html:200
+#: order/templates/order/return_order_base.html:168
+#: order/templates/order/sales_order_base.html:200
#: report/templates/report/inventree_build_order_report.html:125
-#: templates/js/translated/build.js:2411 templates/js/translated/part.js:1837
-#: templates/js/translated/purchase_order.js:1809
-#: templates/js/translated/purchase_order.js:2217
+#: templates/js/translated/build.js:2414 templates/js/translated/part.js:1837
+#: templates/js/translated/purchase_order.js:1793
+#: templates/js/translated/purchase_order.js:2201
#: templates/js/translated/return_order.js:346
#: templates/js/translated/return_order.js:749
-#: templates/js/translated/sales_order.js:871
-#: templates/js/translated/sales_order.js:1903
+#: templates/js/translated/sales_order.js:830
+#: templates/js/translated/sales_order.js:1884
msgid "Target Date"
msgstr "Måldato"
-#: build/templates/build/build_base.html:173
+#: build/templates/build/build_base.html:174
#, python-format
msgid "This build was due on %(target)s"
msgstr "Denne produksjonsordren forfalt %(target)s"
-#: build/templates/build/build_base.html:173
-#: build/templates/build/build_base.html:230
-#: order/templates/order/order_base.html:127
-#: order/templates/order/return_order_base.html:120
-#: order/templates/order/sales_order_base.html:129
+#: build/templates/build/build_base.html:174
+#: build/templates/build/build_base.html:231
+#: order/templates/order/order_base.html:128
+#: order/templates/order/return_order_base.html:121
+#: order/templates/order/sales_order_base.html:130
#: templates/js/translated/table_filters.js:97
#: templates/js/translated/table_filters.js:545
#: templates/js/translated/table_filters.js:629
@@ -1910,49 +1935,50 @@ msgstr "Denne produksjonsordren forfalt %(target)s"
msgid "Overdue"
msgstr "Forfalt"
-#: build/templates/build/build_base.html:185
+#: build/templates/build/build_base.html:186
#: 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:198
-#: build/templates/build/detail.html:101 order/api.py:1406 order/models.py:892
-#: order/models.py:1650 order/models.py:1765 order/models.py:1924
-#: order/templates/order/sales_order_base.html:9
-#: order/templates/order/sales_order_base.html:28
+#: build/templates/build/build_base.html:199
+#: build/templates/build/detail.html:101 order/api.py:1528 order/models.py:914
+#: order/models.py:1666 order/models.py:1794 order/models.py:1957
+#: order/templates/order/sales_order_base.html:10
+#: order/templates/order/sales_order_base.html:29
#: report/templates/report/inventree_build_order_report.html:135
#: report/templates/report/inventree_sales_order_report.html:14
-#: stock/templates/stock/item_base.html:369
+#: report/templates/report/inventree_sales_order_shipment_report.html:15
+#: stock/templates/stock/item_base.html:366
#: templates/email/overdue_sales_order.html:15
-#: templates/js/translated/pricing.js:929
-#: templates/js/translated/sales_order.js:805
-#: templates/js/translated/sales_order.js:1028
-#: templates/js/translated/stock.js:3008
+#: templates/js/translated/pricing.js:927
+#: templates/js/translated/sales_order.js:764
+#: templates/js/translated/sales_order.js:1001
+#: templates/js/translated/stock.js:3009
msgid "Sales Order"
msgstr "Salgsordre"
-#: build/templates/build/build_base.html:219
-#: build/templates/build/detail.html:94 templates/js/translated/build.js:2328
+#: build/templates/build/build_base.html:220
+#: build/templates/build/detail.html:94 templates/js/translated/build.js:2331
msgid "Priority"
msgstr "Prioritet"
-#: build/templates/build/build_base.html:267
+#: build/templates/build/build_base.html:268
msgid "Issue Build Order"
msgstr ""
-#: build/templates/build/build_base.html:271
+#: build/templates/build/build_base.html:272
msgid "Issue this Build Order?"
msgstr ""
-#: build/templates/build/build_base.html:302
+#: build/templates/build/build_base.html:303
msgid "Delete Build Order"
msgstr "Slett Produksjonsordre"
-#: build/templates/build/build_base.html:312
+#: build/templates/build/build_base.html:313
msgid "Build Order QR Code"
msgstr "Produksjonsordrens QR-kode"
-#: build/templates/build/build_base.html:324
+#: build/templates/build/build_base.html:325
msgid "Link Barcode to Build Order"
msgstr "Koble Strekkode til Produksjonsordre"
@@ -1968,8 +1994,9 @@ msgstr "Lagerkilde"
msgid "Stock can be taken from any available location."
msgstr "Lagervare kan hentes fra alle tilgengelige plasseringer."
-#: build/templates/build/detail.html:49 order/models.py:1532
-#: templates/js/translated/purchase_order.js:2259
+#: build/templates/build/detail.html:49 order/models.py:548
+#: order/models.py:1548 order/templates/order/order_base.html:135
+#: templates/js/translated/purchase_order.js:2243
msgid "Destination"
msgstr "Destinasjon"
@@ -1981,23 +2008,24 @@ msgstr "Målplassering er ikke spesifisert"
msgid "Allocated Parts"
msgstr "Tildelte deler"
-#: build/templates/build/detail.html:80 stock/admin.py:162
-#: stock/templates/stock/item_base.html:162
-#: templates/js/translated/build.js:1553
-#: templates/js/translated/model_renderers.js:242
-#: templates/js/translated/purchase_order.js:1326
+#: build/templates/build/detail.html:80
+#: report/templates/report/inventree_sales_order_shipment_report.html:47
+#: stock/admin.py:163 stock/templates/stock/item_base.html:159
+#: templates/js/translated/build.js:1556
+#: templates/js/translated/model_renderers.js:245
+#: templates/js/translated/purchase_order.js:1309
#: templates/js/translated/stock.js:1139 templates/js/translated/stock.js:1240
-#: templates/js/translated/stock.js:2275 templates/js/translated/stock.js:3211
+#: templates/js/translated/stock.js:2276 templates/js/translated/stock.js:3212
#: templates/js/translated/table_filters.js:320
#: templates/js/translated/table_filters.js:411
msgid "Batch"
msgstr "Parti"
#: build/templates/build/detail.html:133
-#: order/templates/order/order_base.html:178
-#: order/templates/order/return_order_base.html:154
-#: order/templates/order/sales_order_base.html:193
-#: templates/js/translated/build.js:2371
+#: order/templates/order/order_base.html:187
+#: order/templates/order/return_order_base.html:155
+#: order/templates/order/sales_order_base.html:194
+#: templates/js/translated/build.js:2374
msgid "Created"
msgstr "Opprettet"
@@ -2005,8 +2033,8 @@ 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:209
+#: build/templates/build/detail.html:149 order/api.py:794
+#: order/templates/order/sales_order_base.html:210
#: templates/js/translated/table_filters.js:692
msgid "Completed"
msgstr "Fullført"
@@ -2052,7 +2080,7 @@ msgid "Order required parts"
msgstr "Bestill nødvendige deler"
#: build/templates/build/detail.html:192
-#: templates/js/translated/purchase_order.js:795
+#: templates/js/translated/purchase_order.js:778
msgid "Order Parts"
msgstr "Bestill deler"
@@ -2120,7 +2148,7 @@ msgstr "Ny produksjonsordre"
msgid "Build Order Details"
msgstr "Produksjonsordre-detaljer"
-#: build/templates/build/sidebar.html:8 order/serializers.py:82
+#: build/templates/build/sidebar.html:8 order/serializers.py:113
#: order/templates/order/po_sidebar.html:5
#: order/templates/order/return_order_detail.html:18
#: order/templates/order/so_sidebar.html:5
@@ -2139,43 +2167,38 @@ msgstr "Ufullstendige artikler"
msgid "Test Statistics"
msgstr ""
-#: common/api.py:693
+#: common/api.py:725
msgid "Is Link"
msgstr "Er lenke"
-#: common/api.py:701
+#: common/api.py:733
msgid "Is File"
msgstr "Er fil"
-#: common/api.py:744
+#: common/api.py:776
msgid "User does not have permission to delete these attachments"
msgstr ""
-#: common/api.py:761
+#: common/api.py:793
msgid "User does not have permission to delete this attachment"
msgstr "Brukeren har ikke tillatelse til å slette dette vedlegget"
-#: common/currency.py:132
+#: common/currency.py:134
msgid "Invalid currency code"
msgstr "Ugyldig valutakode"
-#: common/currency.py:134
+#: common/currency.py:136
msgid "Duplicate currency code"
msgstr "Valutakode eksisterer allerede"
-#: common/currency.py:139
+#: common/currency.py:141
msgid "No valid currency codes provided"
msgstr "Ingen gyldige valutakoder angitt"
-#: common/currency.py:156
+#: common/currency.py:158
msgid "No plugin"
msgstr "Ingen programtillegg"
-#: common/files.py:63
-#, python-brace-format
-msgid "Unsupported file format: {fmt}"
-msgstr "Filformatet støttes ikke: {fmt}"
-
#: common/files.py:65
msgid "Error reading file (invalid encoding)"
msgstr "Feil under lesing av fil (ugyldig koding)"
@@ -2192,1883 +2215,2039 @@ msgstr "Feil under lesing av fil (feil dimensjon)"
msgid "Error reading file (data could be corrupted)"
msgstr "Feil under lesing av fil (data kan være skadet)"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:25
msgid "File"
msgstr "Fil"
-#: common/forms.py:12
+#: common/forms.py:12 common/forms.py:26
msgid "Select file to upload"
msgstr "Velg fil å laste opp"
-#: common/forms.py:25
-msgid "{name.title()} File"
-msgstr "{name.title()} Fil"
-
-#: common/forms.py:26
-#, python-brace-format
-msgid "Select {name} file to upload"
-msgstr "Velg {name} fil som skal lastes opp"
-
-#: common/models.py:86
+#: common/models.py:89
msgid "Updated"
msgstr "Oppdatert"
-#: common/models.py:87
+#: common/models.py:90
msgid "Timestamp of last update"
msgstr "Tidsstempel for forrige oppdatering"
-#: common/models.py:120
+#: common/models.py:123
msgid "Site URL is locked by configuration"
msgstr "Nettstedets URL er låst av konfigurasjon"
-#: common/models.py:150
+#: common/models.py:153
msgid "Unique project code"
msgstr "Unik prosjektkode"
-#: common/models.py:157
+#: common/models.py:160
msgid "Project description"
msgstr "Prosjektbeskrivelse"
-#: common/models.py:166
+#: common/models.py:169
msgid "User or group responsible for this project"
msgstr "Bruker eller gruppe ansvarlig for dette prosjektet"
-#: common/models.py:783
-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:783 common/models.py:2236 common/models.py:2613
+msgid "Settings key"
+msgstr ""
#: common/models.py:787
msgid "Settings value"
msgstr "Innstillings verdi"
-#: common/models.py:839
+#: common/models.py:842
msgid "Chosen value is not a valid option"
msgstr "Valgt verdi er ikke et gyldig alternativ"
-#: common/models.py:855
+#: common/models.py:858
msgid "Value must be a boolean value"
msgstr "Verdien må være en boolsk verdi"
-#: common/models.py:863
+#: common/models.py:866
msgid "Value must be an integer value"
msgstr "Verdien må være et heltall"
-#: common/models.py:900
+#: common/models.py:874
+msgid "Value must be a valid number"
+msgstr ""
+
+#: common/models.py:899
+msgid "Value does not pass validation checks"
+msgstr ""
+
+#: common/models.py:921
msgid "Key string must be unique"
msgstr "Nøkkelstreng må være unik"
-#: common/models.py:1132
+#: common/models.py:1189
msgid "No group"
msgstr "Ingen gruppe"
-#: common/models.py:1231
+#: common/models.py:1288
msgid "Restart required"
msgstr "Omstart kreves"
-#: common/models.py:1233
+#: common/models.py:1290
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:1240
+#: common/models.py:1297
msgid "Pending migrations"
msgstr "Ventende migrasjoner"
-#: common/models.py:1241
+#: common/models.py:1298
msgid "Number of pending database migrations"
msgstr "Antall ventende databasemigreringer"
-#: common/models.py:1246
+#: common/models.py:1303
msgid "Server Instance Name"
msgstr "Navn på serverinstans"
-#: common/models.py:1248
+#: common/models.py:1305
msgid "String descriptor for the server instance"
msgstr "Strengbeskrivelse for serverinstansen"
-#: common/models.py:1252
+#: common/models.py:1309
msgid "Use instance name"
msgstr "Bruk instansnavn"
-#: common/models.py:1253
+#: common/models.py:1310
msgid "Use the instance name in the title-bar"
msgstr "Bruk instansnavnet på tittellinjen"
-#: common/models.py:1258
+#: common/models.py:1315
msgid "Restrict showing `about`"
msgstr "Begrens visning av 'om'"
-#: common/models.py:1259
+#: common/models.py:1316
msgid "Show the `about` modal only to superusers"
msgstr "Vis `about`-modal kun til superbrukere"
-#: common/models.py:1264 company/models.py:111 company/models.py:112
+#: common/models.py:1321 company/models.py:108 company/models.py:109
msgid "Company name"
msgstr "Firmanavn"
-#: common/models.py:1265
+#: common/models.py:1322
msgid "Internal company name"
msgstr "Internt firmanavn"
-#: common/models.py:1269
+#: common/models.py:1326
msgid "Base URL"
msgstr "Base-URL"
-#: common/models.py:1270
+#: common/models.py:1327
msgid "Base URL for server instance"
msgstr "Base-URL for serverinstans"
-#: common/models.py:1276
+#: common/models.py:1333
msgid "Default Currency"
msgstr "Standardvaluta"
-#: common/models.py:1277
+#: common/models.py:1334
msgid "Select base currency for pricing calculations"
msgstr "Velg grunnvalutaen for prisberegninger"
-#: common/models.py:1283
+#: common/models.py:1340
msgid "Supported Currencies"
msgstr "Støttede valutaer"
-#: common/models.py:1284
+#: common/models.py:1341
msgid "List of supported currency codes"
msgstr "Liste over støttede valutakoder"
-#: common/models.py:1290
+#: common/models.py:1347
msgid "Currency Update Interval"
msgstr "Oppdateringsintervall for valuta"
-#: common/models.py:1292
+#: common/models.py:1349
msgid "How often to update exchange rates (set to zero to disable)"
msgstr "Hvor ofte valutakurser skal oppdateres (sett til null for å deaktiverere)"
-#: common/models.py:1295 common/models.py:1351 common/models.py:1364
-#: common/models.py:1372 common/models.py:1381 common/models.py:1390
-#: common/models.py:1627 common/models.py:1649 common/models.py:1764
-#: common/models.py:2146
+#: common/models.py:1352 common/models.py:1408 common/models.py:1421
+#: common/models.py:1429 common/models.py:1438 common/models.py:1447
+#: common/models.py:1696 common/models.py:1718 common/models.py:1819
+#: common/models.py:2208
msgid "days"
msgstr "dager"
-#: common/models.py:1299
+#: common/models.py:1356
msgid "Currency Update Plugin"
msgstr "Valutaoppdaterings-plugin"
-#: common/models.py:1300
+#: common/models.py:1357
msgid "Currency update plugin to use"
msgstr "Valgt valutaoppdaterings-plugin"
-#: common/models.py:1305
+#: common/models.py:1362
msgid "Download from URL"
msgstr "Last ned fra URL"
-#: common/models.py:1307
+#: common/models.py:1364
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:1313
+#: common/models.py:1370
msgid "Download Size Limit"
msgstr "Nedlastingsgrense"
-#: common/models.py:1314
+#: common/models.py:1371
msgid "Maximum allowable download size for remote image"
msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde"
-#: common/models.py:1320
+#: common/models.py:1377
msgid "User-agent used to download from URL"
msgstr "User-Agent brukt for å laste ned fra URL"
-#: common/models.py:1322
+#: common/models.py:1379
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:1327
+#: common/models.py:1384
msgid "Strict URL Validation"
msgstr "Streng URL-validering"
-#: common/models.py:1328
+#: common/models.py:1385
msgid "Require schema specification when validating URLs"
msgstr "Krev skjemaspesifikasjon ved validering av URLer"
-#: common/models.py:1333
+#: common/models.py:1390
msgid "Require confirm"
msgstr "Krev bekreftelse"
-#: common/models.py:1334
+#: common/models.py:1391
msgid "Require explicit user confirmation for certain action."
msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger."
-#: common/models.py:1339
+#: common/models.py:1396
msgid "Tree Depth"
msgstr "Tredybde"
-#: common/models.py:1341
+#: common/models.py:1398
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:1347
+#: common/models.py:1404
msgid "Update Check Interval"
msgstr "Intervall for oppdateringssjekk"
-#: common/models.py:1348
+#: common/models.py:1405
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:1354
+#: common/models.py:1411
msgid "Automatic Backup"
msgstr "Automatisk sikkerhetskopiering"
-#: common/models.py:1355
+#: common/models.py:1412
msgid "Enable automatic backup of database and media files"
msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler"
-#: common/models.py:1360
+#: common/models.py:1417
msgid "Auto Backup Interval"
msgstr "Automatisk sikkerhetskopieringsintervall"
-#: common/models.py:1361
+#: common/models.py:1418
msgid "Specify number of days between automated backup events"
msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser"
-#: common/models.py:1367
+#: common/models.py:1424
msgid "Task Deletion Interval"
msgstr "Slettingsintervall for oppgaver"
-#: common/models.py:1369
+#: common/models.py:1426
msgid "Background task results will be deleted after specified number of days"
msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager"
-#: common/models.py:1376
+#: common/models.py:1433
msgid "Error Log Deletion Interval"
msgstr "Slettingsintervall for feillogg"
-#: common/models.py:1378
+#: common/models.py:1435
msgid "Error logs will be deleted after specified number of days"
msgstr "Feilloggene vil bli slettet etter et angitt antall dager"
-#: common/models.py:1385
+#: common/models.py:1442
msgid "Notification Deletion Interval"
msgstr "Slettingsintervall for varsler"
-#: common/models.py:1387
+#: common/models.py:1444
msgid "User notifications will be deleted after specified number of days"
msgstr "Brukervarsler slettes etter angitt antall dager"
-#: common/models.py:1394 templates/InvenTree/settings/sidebar.html:31
+#: common/models.py:1451 templates/InvenTree/settings/sidebar.html:31
msgid "Barcode Support"
msgstr "Strekkodestøtte"
-#: common/models.py:1395
+#: common/models.py:1452
msgid "Enable barcode scanner support in the web interface"
msgstr "Aktiver støtte for strekkodeleser i webgrensesnittet"
-#: common/models.py:1400
+#: common/models.py:1457
+msgid "Store Barcode Results"
+msgstr ""
+
+#: common/models.py:1458
+msgid "Store barcode scan results in the database"
+msgstr ""
+
+#: common/models.py:1463
+msgid "Barcode Scans Maximum Count"
+msgstr ""
+
+#: common/models.py:1464
+msgid "Maximum number of barcode scan results to store"
+msgstr ""
+
+#: common/models.py:1469
msgid "Barcode Input Delay"
msgstr "Innlesingsforsinkelse for strekkode"
-#: common/models.py:1401
+#: common/models.py:1470
msgid "Barcode input processing delay time"
msgstr "Tidsforsinkelse for behandling av strekkode"
-#: common/models.py:1407
+#: common/models.py:1476
msgid "Barcode Webcam Support"
msgstr "Støtte for strekkodewebkamera"
-#: common/models.py:1408
+#: common/models.py:1477
msgid "Allow barcode scanning via webcam in browser"
msgstr "Tillat strekkodelesning via webkamera i nettleseren"
-#: common/models.py:1413
+#: common/models.py:1482
msgid "Barcode Show Data"
msgstr "Vis Strekkodedata"
-#: common/models.py:1414
+#: common/models.py:1483
msgid "Display barcode data in browser as text"
msgstr "Vis strekkodedata som tekst"
-#: common/models.py:1419
+#: common/models.py:1488
msgid "Barcode Generation Plugin"
msgstr ""
-#: common/models.py:1420
+#: common/models.py:1489
msgid "Plugin to use for internal barcode data generation"
msgstr ""
-#: common/models.py:1425
+#: common/models.py:1494
msgid "Part Revisions"
msgstr "Delrevisjoner"
-#: common/models.py:1426
+#: common/models.py:1495
msgid "Enable revision field for Part"
msgstr "Aktiver revisjonsfeltet for Del"
-#: common/models.py:1431
+#: common/models.py:1500
msgid "Assembly Revision Only"
msgstr ""
-#: common/models.py:1432
+#: common/models.py:1501
msgid "Only allow revisions for assembly parts"
msgstr ""
-#: common/models.py:1437
+#: common/models.py:1506
msgid "Allow Deletion from Assembly"
msgstr ""
-#: common/models.py:1438
+#: common/models.py:1507
msgid "Allow deletion of parts which are used in an assembly"
msgstr ""
-#: common/models.py:1443
+#: common/models.py:1512
msgid "IPN Regex"
msgstr "IPN regex"
-#: common/models.py:1444
+#: common/models.py:1513
msgid "Regular expression pattern for matching Part IPN"
msgstr "Regulært uttrykksmønster for matching av internt delnummer"
-#: common/models.py:1447
+#: common/models.py:1516
msgid "Allow Duplicate IPN"
msgstr "Tilat duplikat av internt delnummer"
-#: common/models.py:1448
+#: common/models.py:1517
msgid "Allow multiple parts to share the same IPN"
msgstr "Tillat flere deler å dele samme interne delnummer"
-#: common/models.py:1453
+#: common/models.py:1522
msgid "Allow Editing IPN"
msgstr "Tillat redigering av internt delnummer"
-#: common/models.py:1454
+#: common/models.py:1523
msgid "Allow changing the IPN value while editing a part"
msgstr "Tillat endring av IPN-verdien mens du redigerer en del"
-#: common/models.py:1459
+#: common/models.py:1528
msgid "Copy Part BOM Data"
msgstr "Kopier BOM-data fra del"
-#: common/models.py:1460
+#: common/models.py:1529
msgid "Copy BOM data by default when duplicating a part"
msgstr "Kopier BOM-data som standard når du dupliserer en del"
-#: common/models.py:1465
+#: common/models.py:1534
msgid "Copy Part Parameter Data"
msgstr "Kopier parameterdata fra del"
-#: common/models.py:1466
+#: common/models.py:1535
msgid "Copy parameter data by default when duplicating a part"
msgstr "Kopier parameterdata som standard ved duplisering av en del"
-#: common/models.py:1471
+#: common/models.py:1540
msgid "Copy Part Test Data"
msgstr "Kopier testdata fra del"
-#: common/models.py:1472
+#: common/models.py:1541
msgid "Copy test data by default when duplicating a part"
msgstr "Kopier testdata som standard ved duplisering av en del"
-#: common/models.py:1477
+#: common/models.py:1546
msgid "Copy Category Parameter Templates"
msgstr "Kopier designmaler for kategoriparametere"
-#: common/models.py:1478
+#: common/models.py:1547
msgid "Copy category parameter templates when creating a part"
msgstr "Kopier parametermaler for kategori ved oppretting av en del"
-#: common/models.py:1483 part/admin.py:108 part/models.py:3945
-#: report/models.py:293 report/models.py:360 report/serializers.py:90
-#: report/serializers.py:131 stock/serializers.py:232
+#: common/models.py:1552 part/admin.py:108 part/models.py:4003
+#: report/models.py:301 report/models.py:368 report/serializers.py:91
+#: report/serializers.py:132 stock/serializers.py:233
#: templates/js/translated/table_filters.js:138
#: templates/js/translated/table_filters.js:775
msgid "Template"
msgstr "Mal"
-#: common/models.py:1484
+#: common/models.py:1553
msgid "Parts are templates by default"
msgstr "Deler er maler som standard"
-#: common/models.py:1490
+#: common/models.py:1559
msgid "Parts can be assembled from other components by default"
msgstr "Deler kan settes sammen fra andre komponenter som standard"
-#: common/models.py:1495 part/admin.py:95 part/models.py:1160
-#: part/serializers.py:1596 templates/js/translated/table_filters.js:737
+#: common/models.py:1564 part/admin.py:95 part/models.py:1221
+#: part/serializers.py:1654 templates/js/translated/table_filters.js:737
msgid "Component"
msgstr "Komponent"
-#: common/models.py:1496
+#: common/models.py:1565
msgid "Parts can be used as sub-components by default"
msgstr "Deler kan bli brukt som underkomponenter som standard"
-#: common/models.py:1501 part/admin.py:100 part/models.py:1178
+#: common/models.py:1570 part/admin.py:100 part/models.py:1239
msgid "Purchaseable"
msgstr "Kjøpbar"
-#: common/models.py:1502
+#: common/models.py:1571
msgid "Parts are purchaseable by default"
msgstr "Deler er kjøpbare som standard"
-#: common/models.py:1507 part/admin.py:104 part/models.py:1184
+#: common/models.py:1576 part/admin.py:104 part/models.py:1245
#: templates/js/translated/table_filters.js:763
msgid "Salable"
msgstr "Salgbar"
-#: common/models.py:1508
+#: common/models.py:1577
msgid "Parts are salable by default"
msgstr "Deler er salgbare som standard"
-#: common/models.py:1514
+#: common/models.py:1583
msgid "Parts are trackable by default"
msgstr "Deler er sporbare som standard"
-#: common/models.py:1519 part/admin.py:117 part/models.py:1200
-#: part/templates/part/part_base.html:154
+#: common/models.py:1588 part/admin.py:117 part/models.py:1261
+#: part/templates/part/part_base.html:155
#: templates/js/translated/table_filters.js:142
#: templates/js/translated/table_filters.js:787
msgid "Virtual"
msgstr "Virtuelle"
-#: common/models.py:1520
+#: common/models.py:1589
msgid "Parts are virtual by default"
msgstr "Deler er virtuelle som standard"
-#: common/models.py:1525
+#: common/models.py:1594
msgid "Show Import in Views"
msgstr "Vis import i visninger"
-#: common/models.py:1526
+#: common/models.py:1595
msgid "Display the import wizard in some part views"
msgstr "Vis importveiviseren i noen deler visninger"
-#: common/models.py:1531
+#: common/models.py:1600
msgid "Show related parts"
msgstr "Vis relaterte deler"
-#: common/models.py:1532
+#: common/models.py:1601
msgid "Display related parts for a part"
msgstr "Vis relaterte deler i en del"
-#: common/models.py:1537
+#: common/models.py:1606
msgid "Initial Stock Data"
msgstr "Innledende lagerbeholdningsdata"
-#: common/models.py:1538
+#: common/models.py:1607
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:1543 templates/js/translated/part.js:108
+#: common/models.py:1612 templates/js/translated/part.js:108
msgid "Initial Supplier Data"
msgstr "Innledende leverandørdata"
-#: common/models.py:1545
+#: common/models.py:1614
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:1551
+#: common/models.py:1620
msgid "Part Name Display Format"
msgstr "Visningsformat for delnavn"
-#: common/models.py:1552
+#: common/models.py:1621
msgid "Format to display the part name"
msgstr "Format for å vise delnavnet"
-#: common/models.py:1558
+#: common/models.py:1627
msgid "Part Category Default Icon"
msgstr "Standardikon for delkategorier"
-#: common/models.py:1559
+#: common/models.py:1628
msgid "Part category default icon (empty means no icon)"
msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)"
-#: common/models.py:1564
+#: common/models.py:1633
msgid "Enforce Parameter Units"
msgstr "Tving parameterenheter"
-#: common/models.py:1566
+#: common/models.py:1635
msgid "If units are provided, parameter values must match the specified units"
msgstr "Hvis det er angitt en enhet, skal parameterverdiene samsvare med de angitte enhetene"
-#: common/models.py:1572
+#: common/models.py:1641
msgid "Minimum Pricing Decimal Places"
msgstr "Minimum antall desimalplasser for priser"
-#: common/models.py:1574
+#: common/models.py:1643
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:1585
+#: common/models.py:1654
msgid "Maximum Pricing Decimal Places"
msgstr "Maksimalt antall desimalplasser for priser"
-#: common/models.py:1587
+#: common/models.py:1656
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:1598
+#: common/models.py:1667
msgid "Use Supplier Pricing"
msgstr "Bruk leverandørpriser"
-#: common/models.py:1600
+#: common/models.py:1669
msgid "Include supplier price breaks in overall pricing calculations"
msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser"
-#: common/models.py:1606
+#: common/models.py:1675
msgid "Purchase History Override"
msgstr "Innkjøpshistorikkoverstyring"
-#: common/models.py:1608
+#: common/models.py:1677
msgid "Historical purchase order pricing overrides supplier price breaks"
msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer"
-#: common/models.py:1614
+#: common/models.py:1683
msgid "Use Stock Item Pricing"
msgstr "Bruk lagervarepriser"
-#: common/models.py:1616
+#: common/models.py:1685
msgid "Use pricing from manually entered stock data for pricing calculations"
msgstr "Bruk priser fra manuelt innlagte lagervarer for prisberegninger"
-#: common/models.py:1622
+#: common/models.py:1691
msgid "Stock Item Pricing Age"
msgstr "Lagervare prisalder"
-#: common/models.py:1624
+#: common/models.py:1693
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:1631
+#: common/models.py:1700
msgid "Use Variant Pricing"
msgstr "Bruk Variantpriser"
-#: common/models.py:1632
+#: common/models.py:1701
msgid "Include variant pricing in overall pricing calculations"
msgstr "Inkluder variantpriser i beregninger av totale priser"
-#: common/models.py:1637
+#: common/models.py:1706
msgid "Active Variants Only"
msgstr "Kun aktive varianter"
-#: common/models.py:1639
+#: common/models.py:1708
msgid "Only use active variant parts for calculating variant pricing"
msgstr "Bruk kun aktive variantdeler til beregning av variantprising"
-#: common/models.py:1645
+#: common/models.py:1714
msgid "Pricing Rebuild Interval"
msgstr "Intervall for rekalkulering av priser"
-#: common/models.py:1647
+#: common/models.py:1716
msgid "Number of days before part pricing is automatically updated"
msgstr "Antall dager før delpriser blir automatisk oppdatert"
-#: common/models.py:1654
+#: common/models.py:1723
msgid "Internal Prices"
msgstr "Interne Priser"
-#: common/models.py:1655
+#: common/models.py:1724
msgid "Enable internal prices for parts"
msgstr "Aktiver interne priser for deler"
-#: common/models.py:1660
+#: common/models.py:1729
msgid "Internal Price Override"
msgstr "Intern prisoverstyring"
-#: common/models.py:1662
+#: common/models.py:1731
msgid "If available, internal prices override price range calculations"
msgstr "Hvis tilgjengelig, overstyrer interne priser kalkulering av prisområde"
-#: common/models.py:1668
+#: common/models.py:1737
msgid "Enable label printing"
msgstr "Aktiver etikettutskrift"
-#: common/models.py:1669
+#: common/models.py:1738
msgid "Enable label printing from the web interface"
msgstr "Aktiver utskrift av etiketter fra nettleseren"
-#: common/models.py:1674
+#: common/models.py:1743
msgid "Label Image DPI"
msgstr "Etikettbilde-DPI"
-#: common/models.py:1676
+#: common/models.py:1745
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:1682
+#: common/models.py:1751
msgid "Enable Reports"
msgstr "Aktiver Rapporter"
-#: common/models.py:1683
+#: common/models.py:1752
msgid "Enable generation of reports"
msgstr "Aktiver generering av rapporter"
-#: common/models.py:1688 templates/stats.html:25
+#: common/models.py:1757 templates/stats.html:25
msgid "Debug Mode"
msgstr "Feilsøkingsmodus"
-#: common/models.py:1689
+#: common/models.py:1758
msgid "Generate reports in debug mode (HTML output)"
msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)"
-#: common/models.py:1694
+#: common/models.py:1763
msgid "Log Report Errors"
msgstr ""
-#: common/models.py:1695
+#: common/models.py:1764
msgid "Log errors which occur when generating reports"
msgstr ""
-#: common/models.py:1700 plugin/builtin/labels/label_sheet.py:28
-#: report/models.py:301
+#: common/models.py:1769 plugin/builtin/labels/label_sheet.py:28
+#: report/models.py:309
msgid "Page Size"
msgstr "Sidestørrelse"
-#: common/models.py:1701
+#: common/models.py:1770
msgid "Default page size for PDF reports"
msgstr "Standard sidestørrelse for PDF-rapporter"
-#: common/models.py:1706
-msgid "Enable Test Reports"
-msgstr "Aktiver Testrapporter"
-
-#: common/models.py:1707
-msgid "Enable generation of test reports"
-msgstr "Aktiver generering av testrapporter"
-
-#: common/models.py:1712
-msgid "Attach Test Reports"
-msgstr "Legg ved testrapporter"
-
-#: common/models.py:1714
-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:1720
+#: common/models.py:1775
msgid "Globally Unique Serials"
msgstr "Globalt Unike Serienummer"
-#: common/models.py:1721
+#: common/models.py:1776
msgid "Serial numbers for stock items must be globally unique"
msgstr "Serienummer for lagervarer må være globalt unike"
-#: common/models.py:1726
+#: common/models.py:1781
msgid "Autofill Serial Numbers"
msgstr "Automatisk tildeling av Serienummer"
-#: common/models.py:1727
+#: common/models.py:1782
msgid "Autofill serial numbers in forms"
msgstr "Aumatisk fyll ut serienummer i skjemaer"
-#: common/models.py:1732
+#: common/models.py:1787
msgid "Delete Depleted Stock"
msgstr "Slett oppbrukt lagerbeholdning"
-#: common/models.py:1734
+#: common/models.py:1789
msgid "Determines default behavior when a stock item is depleted"
msgstr ""
-#: common/models.py:1740
+#: common/models.py:1795
msgid "Batch Code Template"
msgstr "Batchkodemal"
-#: common/models.py:1742
+#: common/models.py:1797
msgid "Template for generating default batch codes for stock items"
msgstr "Mal for generering av standard batchkoder for lagervarer"
-#: common/models.py:1747
+#: common/models.py:1802
msgid "Stock Expiry"
msgstr "Lagerbeholdning utløper"
-#: common/models.py:1748
+#: common/models.py:1803
msgid "Enable stock expiry functionality"
msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning"
-#: common/models.py:1753
+#: common/models.py:1808
msgid "Sell Expired Stock"
msgstr "Selg utløpt lagerbeholdning"
-#: common/models.py:1754
+#: common/models.py:1809
msgid "Allow sale of expired stock"
msgstr "Tillat salg av utgått lagerbeholdning"
-#: common/models.py:1759
+#: common/models.py:1814
msgid "Stock Stale Time"
msgstr "Foreldet lagerbeholdning tidsintervall"
-#: common/models.py:1761
+#: common/models.py:1816
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:1768
+#: common/models.py:1823
msgid "Build Expired Stock"
msgstr "Produsér Utløpt Lagerbeholdning"
-#: common/models.py:1769
+#: common/models.py:1824
msgid "Allow building with expired stock"
msgstr "Tillat produksjon med utløpt lagerbeholdning"
-#: common/models.py:1774
+#: common/models.py:1829
msgid "Stock Ownership Control"
msgstr "Kontroll over eierskap av lagerbeholdning"
-#: common/models.py:1775
+#: common/models.py:1830
msgid "Enable ownership control over stock locations and items"
msgstr "Aktiver eierskap over lagerplasseringer og -varer"
-#: common/models.py:1780
+#: common/models.py:1835
msgid "Stock Location Default Icon"
msgstr "Lagerplassering standard ikon"
-#: common/models.py:1781
+#: common/models.py:1836
msgid "Stock location default icon (empty means no icon)"
msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)"
-#: common/models.py:1786
+#: common/models.py:1841
msgid "Show Installed Stock Items"
msgstr "Vis installerte lagervarer"
-#: common/models.py:1787
+#: common/models.py:1842
msgid "Display installed stock items in stock tables"
msgstr "Vis installerte lagervarer i lagertabeller"
-#: common/models.py:1792
+#: common/models.py:1847
msgid "Check BOM when installing items"
msgstr ""
-#: common/models.py:1794
+#: common/models.py:1849
msgid "Installed stock items must exist in the BOM for the parent part"
msgstr ""
-#: common/models.py:1800
+#: common/models.py:1855
msgid "Allow Out of Stock Transfer"
msgstr ""
-#: common/models.py:1802
+#: common/models.py:1857
msgid "Allow stock items which are not in stock to be transferred between stock locations"
msgstr ""
-#: common/models.py:1808
+#: common/models.py:1863
msgid "Build Order Reference Pattern"
msgstr "Produksjonsordre-referansemønster"
-#: common/models.py:1810
+#: common/models.py:1865
msgid "Required pattern for generating Build Order reference field"
msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet"
-#: common/models.py:1816 common/models.py:1872 common/models.py:1894
-#: common/models.py:1930
+#: common/models.py:1871 common/models.py:1927 common/models.py:1949
+#: common/models.py:1985
msgid "Require Responsible Owner"
msgstr ""
-#: common/models.py:1817 common/models.py:1873 common/models.py:1895
-#: common/models.py:1931
+#: common/models.py:1872 common/models.py:1928 common/models.py:1950
+#: common/models.py:1986
msgid "A responsible owner must be assigned to each order"
msgstr ""
-#: common/models.py:1822
+#: common/models.py:1877
msgid "Require Active Part"
msgstr ""
-#: common/models.py:1823
+#: common/models.py:1878
msgid "Prevent build order creation for inactive parts"
msgstr ""
-#: common/models.py:1828
+#: common/models.py:1883
msgid "Require Locked Part"
msgstr ""
-#: common/models.py:1829
+#: common/models.py:1884
msgid "Prevent build order creation for unlocked parts"
msgstr ""
-#: common/models.py:1834
+#: common/models.py:1889
msgid "Require Valid BOM"
msgstr ""
-#: common/models.py:1836
+#: common/models.py:1891
msgid "Prevent build order creation unless BOM has been validated"
msgstr ""
-#: common/models.py:1842
+#: common/models.py:1897
msgid "Require Closed Child Orders"
msgstr ""
-#: common/models.py:1844
+#: common/models.py:1899
msgid "Prevent build order completion until all child orders are closed"
msgstr ""
-#: common/models.py:1850
+#: common/models.py:1905
msgid "Block Until Tests Pass"
msgstr ""
-#: common/models.py:1852
+#: common/models.py:1907
msgid "Prevent build outputs from being completed until all required tests pass"
msgstr ""
-#: common/models.py:1858
+#: common/models.py:1913
msgid "Enable Return Orders"
msgstr "Aktiver returordrer"
-#: common/models.py:1859
+#: common/models.py:1914
msgid "Enable return order functionality in the user interface"
msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet"
-#: common/models.py:1864
+#: common/models.py:1919
msgid "Return Order Reference Pattern"
msgstr "Returordre-referansemønster"
-#: common/models.py:1866
+#: common/models.py:1921
msgid "Required pattern for generating Return Order reference field"
msgstr ""
-#: common/models.py:1878
+#: common/models.py:1933
msgid "Edit Completed Return Orders"
msgstr "Rediger fullførte returordrer"
-#: common/models.py:1880
+#: common/models.py:1935
msgid "Allow editing of return orders after they have been completed"
msgstr "Tillat redigering av returordrer etter de er fullført"
-#: common/models.py:1886
+#: common/models.py:1941
msgid "Sales Order Reference Pattern"
msgstr "Salgsordre-referansemønster"
-#: common/models.py:1888
+#: common/models.py:1943
msgid "Required pattern for generating Sales Order reference field"
msgstr "Påkrevd mønster for å generere salgsordrereferansefelt"
-#: common/models.py:1900
+#: common/models.py:1955
msgid "Sales Order Default Shipment"
msgstr "Salgsordre standard fraktmetode"
-#: common/models.py:1901
+#: common/models.py:1956
msgid "Enable creation of default shipment with sales orders"
msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer"
-#: common/models.py:1906
+#: common/models.py:1961
msgid "Edit Completed Sales Orders"
msgstr "Rediger fullførte salgsordrer"
-#: common/models.py:1908
+#: common/models.py:1963
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:1914
+#: common/models.py:1969
msgid "Mark Shipped Orders as Complete"
msgstr ""
-#: common/models.py:1916
+#: common/models.py:1971
msgid "Sales orders marked as shipped will automatically be completed, bypassing the \"shipped\" status"
msgstr ""
-#: common/models.py:1922
+#: common/models.py:1977
msgid "Purchase Order Reference Pattern"
msgstr "Referansemønster for innkjøpsordre"
-#: common/models.py:1924
+#: common/models.py:1979
msgid "Required pattern for generating Purchase Order reference field"
msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre"
-#: common/models.py:1936
+#: common/models.py:1991
msgid "Edit Completed Purchase Orders"
msgstr "Rediger fullførte innkjøpsordre"
-#: common/models.py:1938
+#: common/models.py:1993
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:1944
+#: common/models.py:1999
msgid "Auto Complete Purchase Orders"
msgstr "Autofullfør innkjøpsordrer"
-#: common/models.py:1946
+#: common/models.py:2001
msgid "Automatically mark purchase orders as complete when all line items are received"
msgstr "Automatisk merk innkjøpsordre som fullført når alle ordrelinjer er mottatt"
-#: common/models.py:1953
+#: common/models.py:2008
msgid "Enable password forgot"
msgstr "Aktiver passord glemt"
-#: common/models.py:1954
+#: common/models.py:2009
msgid "Enable password forgot function on the login pages"
msgstr "Ativer funskjon for glemt passord på innloggingssidene"
-#: common/models.py:1959
+#: common/models.py:2014
msgid "Enable registration"
msgstr "Aktiver registrering"
-#: common/models.py:1960
+#: common/models.py:2015
msgid "Enable self-registration for users on the login pages"
msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene"
-#: common/models.py:1965
+#: common/models.py:2020
msgid "Enable SSO"
msgstr "Aktiver SSO"
-#: common/models.py:1966
+#: common/models.py:2021
msgid "Enable SSO on the login pages"
msgstr "Aktiver SSO på innloggingssidene"
-#: common/models.py:1971
+#: common/models.py:2026
msgid "Enable SSO registration"
msgstr "Aktiver SSO-registrering"
-#: common/models.py:1973
+#: common/models.py:2028
msgid "Enable self-registration via SSO for users on the login pages"
msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden"
-#: common/models.py:1979
+#: common/models.py:2034
msgid "Enable SSO group sync"
msgstr ""
-#: common/models.py:1981
+#: common/models.py:2036
msgid "Enable synchronizing InvenTree groups with groups provided by the IdP"
msgstr ""
-#: common/models.py:1987
+#: common/models.py:2042
msgid "SSO group key"
msgstr ""
-#: common/models.py:1989
+#: common/models.py:2044
msgid "The name of the groups claim attribute provided by the IdP"
msgstr ""
-#: common/models.py:1995
+#: common/models.py:2050
msgid "SSO group map"
msgstr ""
-#: common/models.py:1997
+#: common/models.py:2052
msgid "A mapping from SSO groups to local InvenTree groups. If the local group does not exist, it will be created."
msgstr ""
-#: common/models.py:2003
+#: common/models.py:2058
msgid "Remove groups outside of SSO"
msgstr ""
-#: common/models.py:2005
+#: common/models.py:2060
msgid "Whether groups assigned to the user should be removed if they are not backend by the IdP. Disabling this setting might cause security issues"
msgstr ""
-#: common/models.py:2011
+#: common/models.py:2066
msgid "Email required"
msgstr "E-postadresse kreves"
-#: common/models.py:2012
+#: common/models.py:2067
msgid "Require user to supply mail on signup"
msgstr "Krevt at brukere angir e-post ved registrering"
-#: common/models.py:2017
+#: common/models.py:2072
msgid "Auto-fill SSO users"
msgstr "Auto-utfyll SSO-brukere"
-#: common/models.py:2019
+#: common/models.py:2074
msgid "Automatically fill out user-details from SSO account-data"
msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata"
-#: common/models.py:2025
+#: common/models.py:2080
msgid "Mail twice"
msgstr "E-post to ganger"
-#: common/models.py:2026
+#: common/models.py:2081
msgid "On signup ask users twice for their mail"
msgstr "Spør brukeren om e-post to ganger ved registrering"
-#: common/models.py:2031
+#: common/models.py:2086
msgid "Password twice"
msgstr "Passord to ganger"
-#: common/models.py:2032
+#: common/models.py:2087
msgid "On signup ask users twice for their password"
msgstr "Spør brukeren om passord to ganger ved registrering"
-#: common/models.py:2037
+#: common/models.py:2092
msgid "Allowed domains"
msgstr "Tillatte domener"
-#: common/models.py:2039
+#: common/models.py:2094
msgid "Restrict signup to certain domains (comma-separated, starting with @)"
msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)"
-#: common/models.py:2045
+#: common/models.py:2100
msgid "Group on signup"
msgstr "Gruppe ved registrering"
-#: common/models.py:2047
+#: common/models.py:2102
msgid "Group to which new users are assigned on registration. If SSO group sync is enabled, this group is only set if no group can be assigned from the IdP."
msgstr ""
-#: common/models.py:2053
+#: common/models.py:2108
msgid "Enforce MFA"
msgstr "Krev MFA"
-#: common/models.py:2054
+#: common/models.py:2109
msgid "Users must use multifactor security."
msgstr "Brukere må bruke flerfaktorsikkerhet."
-#: common/models.py:2059
+#: common/models.py:2114
msgid "Check plugins on startup"
msgstr "Sjekk utvidelser ved oppstart"
-#: common/models.py:2061
+#: common/models.py:2116
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:2069
+#: common/models.py:2124
msgid "Check for plugin updates"
msgstr ""
-#: common/models.py:2070
+#: common/models.py:2125
msgid "Enable periodic checks for updates to installed plugins"
msgstr ""
-#: common/models.py:2076
+#: common/models.py:2131
msgid "Enable URL integration"
msgstr "Aktiver URL-integrasjon"
-#: common/models.py:2077
+#: common/models.py:2132
msgid "Enable plugins to add URL routes"
msgstr "Tillat utvidelser å legge til URL-ruter"
-#: common/models.py:2083
+#: common/models.py:2138
msgid "Enable navigation integration"
msgstr "Aktiver navigasjonsintegrasjon"
-#: common/models.py:2084
+#: common/models.py:2139
msgid "Enable plugins to integrate into navigation"
msgstr "Tillat utvidelser å integrere mot navigasjon"
-#: common/models.py:2090
+#: common/models.py:2145
msgid "Enable app integration"
msgstr "Aktiver app-integrasjon"
-#: common/models.py:2091
+#: common/models.py:2146
msgid "Enable plugins to add apps"
msgstr "Tillat utvidelser å legge til apper"
-#: common/models.py:2097
+#: common/models.py:2152
msgid "Enable schedule integration"
msgstr "Aktiver tidsplanintegrasjon"
-#: common/models.py:2098
+#: common/models.py:2153
msgid "Enable plugins to run scheduled tasks"
msgstr "Tillat utvidelser å kjøre planlagte oppgaver"
-#: common/models.py:2104
+#: common/models.py:2159
msgid "Enable event integration"
msgstr "Aktiver hendelsesintegrasjon"
-#: common/models.py:2105
+#: common/models.py:2160
msgid "Enable plugins to respond to internal events"
msgstr "Tillat utvidelser å reagere på interne hendelser"
-#: common/models.py:2111
+#: common/models.py:2166
+msgid "Enable interface integration"
+msgstr ""
+
+#: common/models.py:2167
+msgid "Enable plugins to integrate into the user interface"
+msgstr ""
+
+#: common/models.py:2173
msgid "Enable project codes"
msgstr "Aktiver prosjektkoder"
-#: common/models.py:2112
+#: common/models.py:2174
msgid "Enable project codes for tracking projects"
msgstr "Aktiver prosjektkoder for å spore prosjekter"
-#: common/models.py:2117
+#: common/models.py:2179
msgid "Stocktake Functionality"
msgstr "Varetellingsfunksjonalitet"
-#: common/models.py:2119
+#: common/models.py:2181
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:2125
+#: common/models.py:2187
msgid "Exclude External Locations"
msgstr "Ekskluder eksterne plasseringer"
-#: common/models.py:2127
+#: common/models.py:2189
msgid "Exclude stock items in external locations from stocktake calculations"
msgstr "Eksluder lagervarer i eksterne plasseringer fra varetellinger"
-#: common/models.py:2133
+#: common/models.py:2195
msgid "Automatic Stocktake Period"
msgstr "Automatisk varetellingsperiode"
-#: common/models.py:2135
+#: common/models.py:2197
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:2141
+#: common/models.py:2203
msgid "Report Deletion Interval"
msgstr "Rapportslettingsintervall"
-#: common/models.py:2143
+#: common/models.py:2205
msgid "Stocktake reports will be deleted after specified number of days"
msgstr "Varetellingsrapporter vil slettes etter angitt antall dager"
-#: common/models.py:2150
+#: common/models.py:2212
msgid "Display Users full names"
msgstr "Vis brukernes fulle navn"
-#: common/models.py:2151
+#: common/models.py:2213
msgid "Display Users full names instead of usernames"
msgstr "Vis brukernes fulle navn istedet for brukernavn"
-#: common/models.py:2156
+#: common/models.py:2218
msgid "Enable Test Station Data"
msgstr ""
-#: common/models.py:2157
+#: common/models.py:2219
msgid "Enable test station data collection for test results"
msgstr ""
-#: common/models.py:2169 common/models.py:2549
-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:2224
+msgid "Create Template on Upload"
+msgstr ""
-#: common/models.py:2212
+#: common/models.py:2226
+msgid "Create a new test template when uploading test data which does not match an existing template"
+msgstr ""
+
+#: common/models.py:2279
msgid "Hide inactive parts"
msgstr "Skjul inaktive elementer"
-#: common/models.py:2214
+#: common/models.py:2281
msgid "Hide inactive parts in results displayed on the homepage"
msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden"
-#: common/models.py:2220
+#: common/models.py:2287
msgid "Show subscribed parts"
msgstr "Vis abonnerte deler"
-#: common/models.py:2221
+#: common/models.py:2288
msgid "Show subscribed parts on the homepage"
msgstr "Vis abonnerte deler på startsiden"
-#: common/models.py:2226
+#: common/models.py:2293
msgid "Show subscribed categories"
msgstr "Vis abonnerte kategorier"
-#: common/models.py:2227
+#: common/models.py:2294
msgid "Show subscribed part categories on the homepage"
msgstr "Vis abonnerte delkatekorier på startsiden"
-#: common/models.py:2232
+#: common/models.py:2299
msgid "Show latest parts"
msgstr "Vis nyeste deler"
-#: common/models.py:2233
+#: common/models.py:2300
msgid "Show latest parts on the homepage"
msgstr "Vis nyeste deler på startsiden"
-#: common/models.py:2238
+#: common/models.py:2305
msgid "Show invalid BOMs"
msgstr ""
-#: common/models.py:2239
+#: common/models.py:2306
msgid "Show BOMs that await validation on the homepage"
msgstr "Vis stykklister som venter på validering på startsiden"
-#: common/models.py:2244
+#: common/models.py:2311
msgid "Show recent stock changes"
msgstr "Vis nylige lagerendringer"
-#: common/models.py:2245
+#: common/models.py:2312
msgid "Show recently changed stock items on the homepage"
msgstr "Vis nylig endrede lagervarer på startsiden"
-#: common/models.py:2250
+#: common/models.py:2317
msgid "Show low stock"
msgstr "Vis lav lagerbeholdning"
-#: common/models.py:2251
+#: common/models.py:2318
msgid "Show low stock items on the homepage"
msgstr "Vis lave lagervarer på startsiden"
-#: common/models.py:2256
+#: common/models.py:2323
msgid "Show depleted stock"
msgstr "Vis tomme lagervarer"
-#: common/models.py:2257
+#: common/models.py:2324
msgid "Show depleted stock items on the homepage"
msgstr "Vis tom lagerbeholdning på startsiden"
-#: common/models.py:2262
+#: common/models.py:2329
msgid "Show needed stock"
msgstr "Vis nødvendig lagerbeholdning"
-#: common/models.py:2263
+#: common/models.py:2330
msgid "Show stock items needed for builds on the homepage"
msgstr "Vis lagervarer som trengs for produksjon på startsiden"
-#: common/models.py:2268
+#: common/models.py:2335
msgid "Show expired stock"
msgstr "Vis utløpt lagerbeholdning"
-#: common/models.py:2269
+#: common/models.py:2336
msgid "Show expired stock items on the homepage"
msgstr "Vis utløpte lagervarer på startsiden"
-#: common/models.py:2274
+#: common/models.py:2341
msgid "Show stale stock"
msgstr "Vis foreldet lagerbeholdning"
-#: common/models.py:2275
+#: common/models.py:2342
msgid "Show stale stock items on the homepage"
msgstr "Vis foreldet lagerbeholdning på startsiden"
-#: common/models.py:2280
+#: common/models.py:2347
msgid "Show pending builds"
msgstr "Vis ventende produksjoner"
-#: common/models.py:2281
+#: common/models.py:2348
msgid "Show pending builds on the homepage"
msgstr "Vi ventende produksjoner på startsiden"
-#: common/models.py:2286
+#: common/models.py:2353
msgid "Show overdue builds"
msgstr "Vis forfalte produksjoner"
-#: common/models.py:2287
+#: common/models.py:2354
msgid "Show overdue builds on the homepage"
msgstr "Vis forfalte produksjoner på startsiden"
-#: common/models.py:2292
+#: common/models.py:2359
msgid "Show outstanding POs"
msgstr "Vis utestående Innkjøpsordrer"
-#: common/models.py:2293
+#: common/models.py:2360
msgid "Show outstanding POs on the homepage"
msgstr "Vis utestående Innkjøpsordrer på startsiden"
-#: common/models.py:2298
+#: common/models.py:2365
msgid "Show overdue POs"
msgstr "Vis forfalte Innkjøpsordrer"
-#: common/models.py:2299
+#: common/models.py:2366
msgid "Show overdue POs on the homepage"
msgstr "Vis forfalte Innkjøpsordrer på startsiden"
-#: common/models.py:2304
+#: common/models.py:2371
msgid "Show outstanding SOs"
msgstr "Vis utestående Salgsordrer"
-#: common/models.py:2305
+#: common/models.py:2372
msgid "Show outstanding SOs on the homepage"
msgstr "Vis utestående Salgsordrer på startsiden"
-#: common/models.py:2310
+#: common/models.py:2377
msgid "Show overdue SOs"
msgstr "Vis forfalte SOer"
-#: common/models.py:2311
+#: common/models.py:2378
msgid "Show overdue SOs on the homepage"
msgstr "Vis forfalte SOer på startsiden"
-#: common/models.py:2316
+#: common/models.py:2383
msgid "Show pending SO shipments"
msgstr "Vis ventende SO-forsendelser"
-#: common/models.py:2317
+#: common/models.py:2384
msgid "Show pending SO shipments on the homepage"
msgstr "Vis ventende SO-forsendelser på startsiden"
-#: common/models.py:2322
+#: common/models.py:2389
msgid "Show News"
msgstr "Vis Nyheter"
-#: common/models.py:2323
+#: common/models.py:2390
msgid "Show news on the homepage"
msgstr "Vis nyheter på startsiden"
-#: common/models.py:2328
+#: common/models.py:2395
msgid "Inline label display"
msgstr "Innebygd etikettvisning"
-#: common/models.py:2330
+#: common/models.py:2397
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:2336
+#: common/models.py:2403
msgid "Default label printer"
msgstr "Standard etikettskriver"
-#: common/models.py:2338
+#: common/models.py:2405
msgid "Configure which label printer should be selected by default"
msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard"
-#: common/models.py:2344
+#: common/models.py:2411
msgid "Inline report display"
msgstr "Innebygd rapportvisning"
-#: common/models.py:2346
+#: common/models.py:2413
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:2352
+#: common/models.py:2419
msgid "Search Parts"
msgstr "Søk i Deler"
-#: common/models.py:2353
+#: common/models.py:2420
msgid "Display parts in search preview window"
msgstr "Vis deler i forhåndsvsningsvinduet for søk"
-#: common/models.py:2358
+#: common/models.py:2425
msgid "Search Supplier Parts"
msgstr "Søk i Leverandørdeler"
-#: common/models.py:2359
+#: common/models.py:2426
msgid "Display supplier parts in search preview window"
msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk"
-#: common/models.py:2364
+#: common/models.py:2431
msgid "Search Manufacturer Parts"
msgstr "Søk i Produsentdeler"
-#: common/models.py:2365
+#: common/models.py:2432
msgid "Display manufacturer parts in search preview window"
msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk"
-#: common/models.py:2370
+#: common/models.py:2437
msgid "Hide Inactive Parts"
msgstr "Skjul Inaktive Deler"
-#: common/models.py:2371
+#: common/models.py:2438
msgid "Excluded inactive parts from search preview window"
msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2376
+#: common/models.py:2443
msgid "Search Categories"
msgstr "Søk i kategorier"
-#: common/models.py:2377
+#: common/models.py:2444
msgid "Display part categories in search preview window"
msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk"
-#: common/models.py:2382
+#: common/models.py:2449
msgid "Search Stock"
msgstr "Søk i lagerbeholdning"
-#: common/models.py:2383
+#: common/models.py:2450
msgid "Display stock items in search preview window"
msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2388
+#: common/models.py:2455
msgid "Hide Unavailable Stock Items"
msgstr "Skjul utilgjengelige Lagervarer"
-#: common/models.py:2390
+#: common/models.py:2457
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:2396
+#: common/models.py:2463
msgid "Search Locations"
msgstr "Søk i Plasseringer"
-#: common/models.py:2397
+#: common/models.py:2464
msgid "Display stock locations in search preview window"
msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2402
+#: common/models.py:2469
msgid "Search Companies"
msgstr "Søk i Firma"
-#: common/models.py:2403
+#: common/models.py:2470
msgid "Display companies in search preview window"
msgstr "Vis firma i forhåndsvsningsvinduet for søk"
-#: common/models.py:2408
+#: common/models.py:2475
msgid "Search Build Orders"
msgstr "Søk i Produksjonsordrer"
-#: common/models.py:2409
+#: common/models.py:2476
msgid "Display build orders in search preview window"
msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2414
+#: common/models.py:2481
msgid "Search Purchase Orders"
msgstr "Søk i Innkjøpsordrer"
-#: common/models.py:2415
+#: common/models.py:2482
msgid "Display purchase orders in search preview window"
msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2420
+#: common/models.py:2487
msgid "Exclude Inactive Purchase Orders"
msgstr "Ekskluder inaktive Innkjøpsordrer"
-#: common/models.py:2422
+#: common/models.py:2489
msgid "Exclude inactive purchase orders from search preview window"
msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2428
+#: common/models.py:2495
msgid "Search Sales Orders"
msgstr "Søk i Salgsordrer"
-#: common/models.py:2429
+#: common/models.py:2496
msgid "Display sales orders in search preview window"
msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2434
+#: common/models.py:2501
msgid "Exclude Inactive Sales Orders"
msgstr "Ekskluder Inaktive Salgsordrer"
-#: common/models.py:2436
+#: common/models.py:2503
msgid "Exclude inactive sales orders from search preview window"
msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2442
+#: common/models.py:2509
msgid "Search Return Orders"
msgstr "Søk i Returordrer"
-#: common/models.py:2443
+#: common/models.py:2510
msgid "Display return orders in search preview window"
msgstr "Vis returordrer i forhåndsvisningsvinduet for søk"
-#: common/models.py:2448
+#: common/models.py:2515
msgid "Exclude Inactive Return Orders"
msgstr "Ekskluder Inaktive Returordrer"
-#: common/models.py:2450
+#: common/models.py:2517
msgid "Exclude inactive return orders from search preview window"
msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk"
-#: common/models.py:2456
+#: common/models.py:2523
msgid "Search Preview Results"
msgstr "Forhåndsvisning av søkeresultater"
-#: common/models.py:2458
+#: common/models.py:2525
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:2464
+#: common/models.py:2531
msgid "Regex Search"
msgstr "Regex-søk"
-#: common/models.py:2465
+#: common/models.py:2532
msgid "Enable regular expressions in search queries"
msgstr "Aktiver regulære uttrykk i søkeord"
-#: common/models.py:2470
+#: common/models.py:2537
msgid "Whole Word Search"
msgstr "Helordsøk"
-#: common/models.py:2471
+#: common/models.py:2538
msgid "Search queries return results for whole word matches"
msgstr "Søk returnerer resultater for treff med hele ord"
-#: common/models.py:2476
+#: common/models.py:2543
msgid "Show Quantity in Forms"
msgstr "Vis antall i skjemaer"
-#: common/models.py:2477
+#: common/models.py:2544
msgid "Display available part quantity in some forms"
msgstr "Vis antall tilgjengelige deler i noen skjemaer"
-#: common/models.py:2482
+#: common/models.py:2549
msgid "Escape Key Closes Forms"
msgstr "Escape-knappen lukker skjemaer"
-#: common/models.py:2483
+#: common/models.py:2550
msgid "Use the escape key to close modal forms"
msgstr "Bruk Escape-knappen for å lukke modal-skjemaer"
-#: common/models.py:2488
+#: common/models.py:2555
msgid "Fixed Navbar"
msgstr "Fast navigasjonsbar"
-#: common/models.py:2489
+#: common/models.py:2556
msgid "The navbar position is fixed to the top of the screen"
msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen"
-#: common/models.py:2494
+#: common/models.py:2561
msgid "Date Format"
msgstr "Datoformat"
-#: common/models.py:2495
+#: common/models.py:2562
msgid "Preferred format for displaying dates"
msgstr "Foretrukket format for å vise datoer"
-#: common/models.py:2508 part/templates/part/detail.html:41
+#: common/models.py:2575 part/templates/part/detail.html:41
msgid "Part Scheduling"
msgstr "Delplanlegging"
-#: common/models.py:2509
+#: common/models.py:2576
msgid "Display part scheduling information"
msgstr "Vis delplanleggingsinformasjon"
-#: common/models.py:2514 part/templates/part/detail.html:62
+#: common/models.py:2581 part/templates/part/detail.html:62
msgid "Part Stocktake"
msgstr "Lagertelling for Del"
-#: common/models.py:2516
+#: common/models.py:2583
msgid "Display part stocktake information (if stocktake functionality is enabled)"
msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)"
-#: common/models.py:2522
+#: common/models.py:2589
msgid "Table String Length"
msgstr "Tabellstrenglengde"
-#: common/models.py:2524
+#: common/models.py:2591
msgid "Maximum length limit for strings displayed in table views"
msgstr "Maksimal lengdegrense for tekst vist i tabeller"
-#: common/models.py:2530
+#: common/models.py:2597
msgid "Receive error reports"
msgstr "Motta feilrapporter"
-#: common/models.py:2531
+#: common/models.py:2598
msgid "Receive notifications for system errors"
msgstr "Motta varsler om systemfeil"
-#: common/models.py:2536
+#: common/models.py:2603
msgid "Last used printing machines"
msgstr ""
-#: common/models.py:2537
+#: common/models.py:2604
msgid "Save the last used printing machines for a user"
msgstr ""
-#: common/models.py:2557 common/models.py:2558 common/models.py:2715
-#: common/models.py:2716 common/models.py:2961 common/models.py:2962
-#: common/models.py:3288 common/models.py:3289 importer/models.py:88
-#: part/models.py:3307 part/models.py:3394 part/models.py:3468
-#: part/models.py:3496 plugin/models.py:274 plugin/models.py:275
-#: report/templates/report/inventree_test_report.html:105
-#: templates/js/translated/stock.js:3120 users/models.py:111
+#: common/models.py:2621 common/models.py:2622 common/models.py:2779
+#: common/models.py:2780 common/models.py:3025 common/models.py:3026
+#: common/models.py:3349 common/models.py:3350 common/models.py:3534
+#: importer/models.py:89 part/models.py:3358 part/models.py:3445
+#: part/models.py:3519 part/models.py:3547 plugin/models.py:313
+#: plugin/models.py:314 report/templates/report/inventree_test_report.html:105
+#: templates/js/translated/stock.js:3121 users/models.py:111
msgid "User"
msgstr "Bruker"
-#: common/models.py:2580
+#: common/models.py:2644
msgid "Price break quantity"
msgstr "Antall for prisbrudd"
-#: common/models.py:2587 company/serializers.py:513 order/admin.py:42
-#: order/models.py:1430 order/models.py:2417
-#: templates/js/translated/company.js:1823 templates/js/translated/part.js:1892
+#: common/models.py:2651 company/serializers.py:524 order/admin.py:42
+#: order/models.py:1447 order/models.py:2456
+#: templates/js/translated/company.js:1824 templates/js/translated/part.js:1892
#: templates/js/translated/pricing.js:621
#: templates/js/translated/return_order.js:739
msgid "Price"
msgstr "Pris"
-#: common/models.py:2588
+#: common/models.py:2652
msgid "Unit price at specified quantity"
msgstr "Enhetspris på spesifisert antall"
-#: common/models.py:2692 common/models.py:2877
+#: common/models.py:2756 common/models.py:2941
msgid "Endpoint"
msgstr "Endepunkt"
-#: common/models.py:2693
+#: common/models.py:2757
msgid "Endpoint at which this webhook is received"
msgstr "Endepunktet hvor denne webhooken er mottatt"
-#: common/models.py:2703
+#: common/models.py:2767
msgid "Name for this webhook"
msgstr "Navn for webhooken"
-#: common/models.py:2707
+#: common/models.py:2771
msgid "Is this webhook active"
msgstr "Er webhooken aktiv"
-#: common/models.py:2723 users/models.py:159
+#: common/models.py:2787 users/models.py:159
msgid "Token"
msgstr "Sjetong"
-#: common/models.py:2724
+#: common/models.py:2788
msgid "Token for access"
msgstr "Nøkkel for tilgang"
-#: common/models.py:2732
+#: common/models.py:2796
msgid "Secret"
msgstr "Hemmelig"
-#: common/models.py:2733
+#: common/models.py:2797
msgid "Shared secret for HMAC"
msgstr "Delt hemmlighet for HMAC"
-#: common/models.py:2841
+#: common/models.py:2905
msgid "Message ID"
msgstr "Melding ID"
-#: common/models.py:2842
+#: common/models.py:2906
msgid "Unique identifier for this message"
msgstr "Unik Id for denne meldingen"
-#: common/models.py:2850
+#: common/models.py:2914
msgid "Host"
msgstr "Vert"
-#: common/models.py:2851
+#: common/models.py:2915
msgid "Host from which this message was received"
msgstr "Verten denne meldingen ble mottatt fra"
-#: common/models.py:2859
+#: common/models.py:2923
msgid "Header"
msgstr "Tittel"
-#: common/models.py:2860
+#: common/models.py:2924
msgid "Header of this message"
msgstr "Overskrift for denne meldingen"
-#: common/models.py:2867
+#: common/models.py:2931
msgid "Body"
msgstr "Brødtekst"
-#: common/models.py:2868
+#: common/models.py:2932
msgid "Body of this message"
msgstr "Innholdet i meldingen"
-#: common/models.py:2878
+#: common/models.py:2942
msgid "Endpoint on which this message was received"
msgstr "Endepunktet meldingen ble mottatt fra"
-#: common/models.py:2883
+#: common/models.py:2947
msgid "Worked on"
msgstr "Arbeidet med"
-#: common/models.py:2884
+#: common/models.py:2948
msgid "Was the work on this message finished?"
msgstr "Var arbeidet med denne meldingen ferdig?"
-#: common/models.py:3010
+#: common/models.py:3074
msgid "Id"
msgstr ""
-#: common/models.py:3012 templates/js/translated/company.js:965
-#: templates/js/translated/news.js:44
+#: common/models.py:3076 part/serializers.py:271
+#: templates/js/translated/company.js:966 templates/js/translated/news.js:44
msgid "Title"
msgstr "Tittel"
-#: common/models.py:3014 common/models.py:3272 company/models.py:149
-#: company/models.py:446 company/models.py:512 company/models.py:818
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
-#: part/admin.py:55 part/models.py:1057
+#: common/models.py:3078 common/models.py:3333 company/models.py:146
+#: company/models.py:443 company/models.py:509 company/models.py:815
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
+#: part/admin.py:55 part/models.py:1118
#: part/templates/part/part_scheduling.html:11
#: report/templates/report/inventree_build_order_report.html:164
-#: stock/admin.py:229 templates/js/translated/company.js:1319
-#: templates/js/translated/company.js:1673 templates/js/translated/order.js:376
+#: stock/admin.py:230 templates/js/translated/company.js:1320
+#: templates/js/translated/company.js:1674 templates/js/translated/order.js:376
#: templates/js/translated/part.js:2475
-#: templates/js/translated/purchase_order.js:2110
-#: templates/js/translated/purchase_order.js:2274
+#: templates/js/translated/purchase_order.js:2094
+#: templates/js/translated/purchase_order.js:2258
#: templates/js/translated/return_order.js:778
-#: templates/js/translated/sales_order.js:1092
-#: templates/js/translated/sales_order.js:2023
+#: templates/js/translated/sales_order.js:1058
+#: templates/js/translated/sales_order.js:2004
msgid "Link"
msgstr "Lenke"
-#: common/models.py:3016 templates/js/translated/news.js:60
+#: common/models.py:3080 templates/js/translated/news.js:60
msgid "Published"
msgstr "Publisert"
-#: common/models.py:3018 templates/InvenTree/settings/plugin_settings.html:32
+#: common/models.py:3082 templates/InvenTree/settings/plugin_settings.html:32
#: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103
msgid "Author"
msgstr "Forfatter"
-#: common/models.py:3020 templates/js/translated/news.js:52
+#: common/models.py:3084 templates/js/translated/news.js:52
msgid "Summary"
msgstr "Sammendrag"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Read"
msgstr "Les"
-#: common/models.py:3023
+#: common/models.py:3087
msgid "Was this news item read?"
msgstr "Er dette nyhetselementet lest?"
-#: common/models.py:3040 company/models.py:159 part/models.py:1067
+#: common/models.py:3104 company/models.py:156 part/models.py:1128
#: report/templates/report/inventree_bill_of_materials_report.html:126
#: report/templates/report/inventree_bill_of_materials_report.html:148
#: report/templates/report/inventree_return_order_report.html:35
-#: stock/templates/stock/item_base.html:133 templates/503.html:31
+#: stock/templates/stock/item_base.html:130 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:3040
+#: common/models.py:3104
msgid "Image file"
msgstr "Bildefil"
-#: common/models.py:3052 common/models.py:3256
+#: common/models.py:3116 common/models.py:3317
msgid "Target model type for this image"
msgstr ""
-#: common/models.py:3056
+#: common/models.py:3120
msgid "Target model ID for this image"
msgstr ""
-#: common/models.py:3078
+#: common/models.py:3142
msgid "Custom Unit"
msgstr ""
-#: common/models.py:3099
+#: common/models.py:3160
msgid "Unit symbol must be unique"
msgstr "Enhetssymbolet må være unikt"
-#: common/models.py:3114
+#: common/models.py:3175
msgid "Unit name must be a valid identifier"
msgstr "Enhetsnavn må være en gyldig identifikator"
-#: common/models.py:3133
+#: common/models.py:3194
msgid "Unit name"
msgstr "Enhetsnavn"
-#: common/models.py:3140 templates/InvenTree/settings/settings_staff_js.html:75
+#: common/models.py:3201 templates/InvenTree/settings/settings_staff_js.html:75
msgid "Symbol"
msgstr "Symbol"
-#: common/models.py:3141
+#: common/models.py:3202
msgid "Optional unit symbol"
msgstr "Valgfritt enhetssymbol"
-#: common/models.py:3147 templates/InvenTree/settings/settings_staff_js.html:71
+#: common/models.py:3208 templates/InvenTree/settings/settings_staff_js.html:71
msgid "Definition"
msgstr "Definisjon"
-#: common/models.py:3148
+#: common/models.py:3209
msgid "Unit definition"
msgstr "Enhetsdefinisjon"
-#: common/models.py:3206 common/models.py:3263 stock/models.py:2558
-#: templates/js/translated/attachment.js:119
+#: common/models.py:3267 common/models.py:3324 stock/models.py:2674
+#: stock/serializers.py:244 templates/js/translated/attachment.js:119
#: templates/js/translated/attachment.js:345
msgid "Attachment"
msgstr "Vedlegg"
-#: common/models.py:3218
+#: common/models.py:3279
msgid "Missing file"
msgstr "Fil mangler"
-#: common/models.py:3219
+#: common/models.py:3280
msgid "Missing external link"
msgstr "Mangler eksternlenke"
-#: common/models.py:3264
+#: common/models.py:3325
msgid "Select file to attach"
msgstr "Velg fil å legge ved"
-#: common/models.py:3279 templates/js/translated/attachment.js:120
+#: common/models.py:3340 templates/js/translated/attachment.js:120
#: templates/js/translated/attachment.js:360
msgid "Comment"
msgstr "Kommentar"
-#: common/models.py:3280
+#: common/models.py:3341
msgid "Attachment comment"
msgstr "Vedleggskommentar"
-#: common/models.py:3296
+#: common/models.py:3357
msgid "Upload date"
msgstr "Opplastet dato"
-#: common/models.py:3297
+#: common/models.py:3358
msgid "Date the file was uploaded"
msgstr "Datoen som filen ble lastet opp"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size"
msgstr "Filstørrelse"
-#: common/models.py:3301
+#: common/models.py:3362
msgid "File size in bytes"
msgstr "Filstørrelse i byte"
-#: common/models.py:3339 common/serializers.py:562
+#: common/models.py:3400 common/serializers.py:609
msgid "Invalid model type specified for attachment"
msgstr "Ugyldig modelltype spesifisert for vedlegg"
-#: common/notifications.py:314
+#: common/models.py:3409 plugin/models.py:43 users/models.py:100
+msgid "Key"
+msgstr "Nøkkel"
+
+#: common/models.py:3410
+msgid "Value that will be saved in the models database"
+msgstr ""
+
+#: common/models.py:3413
+msgid "Name of the state"
+msgstr ""
+
+#: common/models.py:3417 part/serializers.py:273
+msgid "Label"
+msgstr ""
+
+#: common/models.py:3418
+msgid "Label that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3424
+msgid "Color"
+msgstr ""
+
+#: common/models.py:3425
+msgid "Color that will be displayed in the frontend"
+msgstr ""
+
+#: common/models.py:3428
+msgid "Logical Key"
+msgstr ""
+
+#: common/models.py:3430
+msgid "State logical key that is equal to this custom state in business logic"
+msgstr ""
+
+#: common/models.py:3438 part/serializers.py:275
+msgid "Model"
+msgstr ""
+
+#: common/models.py:3439
+msgid "Model this state is associated with"
+msgstr ""
+
+#: common/models.py:3443
+msgid "Reference Status Set"
+msgstr ""
+
+#: common/models.py:3444
+msgid "Status set that is extended with this custom state"
+msgstr ""
+
+#: common/models.py:3450
+msgid "Custom State"
+msgstr ""
+
+#: common/models.py:3451
+msgid "Custom States"
+msgstr ""
+
+#: common/models.py:3466
+msgid "Model must be selected"
+msgstr ""
+
+#: common/models.py:3469
+msgid "Key must be selected"
+msgstr ""
+
+#: common/models.py:3472
+msgid "Logical key must be selected"
+msgstr ""
+
+#: common/models.py:3476
+msgid "Key must be different from logical key"
+msgstr ""
+
+#: common/models.py:3480
+msgid "Reference status must be selected"
+msgstr ""
+
+#: common/models.py:3492
+msgid "Reference status set not found"
+msgstr ""
+
+#: common/models.py:3498
+msgid "Key must be different from the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3504
+msgid "Logical key must be in the logical keys of the reference status"
+msgstr ""
+
+#: common/models.py:3519
+msgid "Barcode Scan"
+msgstr ""
+
+#: common/models.py:3523 importer/models.py:512 part/models.py:4009
+msgid "Data"
+msgstr ""
+
+#: common/models.py:3524
+msgid "Barcode data"
+msgstr ""
+
+#: common/models.py:3535
+msgid "User who scanned the barcode"
+msgstr ""
+
+#: common/models.py:3540 importer/models.py:60
+msgid "Timestamp"
+msgstr ""
+
+#: common/models.py:3541
+msgid "Date and time of the barcode scan"
+msgstr ""
+
+#: common/models.py:3547
+msgid "URL endpoint which processed the barcode"
+msgstr ""
+
+#: common/models.py:3554 order/models.py:1437 plugin/serializers.py:89
+msgid "Context"
+msgstr "Kontekst"
+
+#: common/models.py:3555
+msgid "Context data for the barcode scan"
+msgstr ""
+
+#: common/models.py:3562
+msgid "Response"
+msgstr ""
+
+#: common/models.py:3563
+msgid "Response data from the barcode scan"
+msgstr ""
+
+#: common/models.py:3569 report/templates/report/inventree_test_report.html:103
+#: stock/models.py:2660
+msgid "Result"
+msgstr "Resultat"
+
+#: common/models.py:3570
+msgid "Was the barcode scan successful?"
+msgstr ""
+
+#: common/notifications.py:328
#, python-brace-format
msgid "New {verbose_name}"
msgstr "Ny {verbose_name}"
-#: common/notifications.py:316
+#: common/notifications.py:330
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:322
+#: common/notifications.py:336
#, python-brace-format
msgid "{verbose_name} canceled"
msgstr "{verbose_name} kansellert"
-#: common/notifications.py:324
+#: common/notifications.py:338
msgid "A order that is assigned to you was canceled"
msgstr "En ordre som er tildelt til deg ble kansellert"
-#: common/notifications.py:330 common/notifications.py:337 order/api.py:462
+#: common/notifications.py:344 common/notifications.py:351 order/api.py:440
msgid "Items Received"
msgstr "Artikler mottatt"
-#: common/notifications.py:332
+#: common/notifications.py:346
msgid "Items have been received against a purchase order"
msgstr "Artikler har blitt mottatt mot en innkjøpsordre"
-#: common/notifications.py:339
+#: common/notifications.py:353
msgid "Items have been received against a return order"
msgstr "Artikler har blitt mottatt mot en returordre"
-#: common/notifications.py:457
+#: common/notifications.py:475
msgid "Error raised by plugin"
msgstr "Feil oppstått i utvidelse"
-#: common/serializers.py:375
+#: common/serializers.py:423
msgid "Is Running"
msgstr "Kjører"
-#: common/serializers.py:381
+#: common/serializers.py:429
msgid "Pending Tasks"
msgstr "Ventende oppgaver"
-#: common/serializers.py:387
+#: common/serializers.py:435
msgid "Scheduled Tasks"
msgstr "Planlagte oppgaver"
-#: common/serializers.py:393
+#: common/serializers.py:441
msgid "Failed Tasks"
msgstr "Mislykkede oppgaver"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Task ID"
msgstr "Oppgave-ID"
-#: common/serializers.py:408
+#: common/serializers.py:456
msgid "Unique task ID"
msgstr "Unik oppgave-ID"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock"
msgstr "Lås"
-#: common/serializers.py:410
+#: common/serializers.py:458
msgid "Lock time"
msgstr "Låsetidspunkt"
-#: common/serializers.py:412
+#: common/serializers.py:460
msgid "Task name"
msgstr "Oppgavenavn"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function"
msgstr "Funksjon"
-#: common/serializers.py:414
+#: common/serializers.py:462
msgid "Function name"
msgstr "Funksjonsnavn"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Arguments"
msgstr "Argumenter"
-#: common/serializers.py:416
+#: common/serializers.py:464
msgid "Task arguments"
msgstr "Oppgaveargumenter"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Keyword Arguments"
msgstr "Nøkkelordargumenter"
-#: common/serializers.py:419
+#: common/serializers.py:467
msgid "Task keyword arguments"
msgstr "Nøkkelordargumenter for oppgave"
-#: common/serializers.py:529
+#: common/serializers.py:577
msgid "Filename"
msgstr "Filnavn"
-#: common/serializers.py:536 report/api.py:100 report/serializers.py:53
+#: common/serializers.py:584 report/api.py:100 report/serializers.py:54
msgid "Model Type"
msgstr "Modelltype"
-#: common/serializers.py:565
+#: common/serializers.py:612
msgid "User does not have permission to create or edit attachments for this model"
msgstr "Brukeren har ikke tillatelse tillatelse å opprette eller endre vedlegg for denne modellen"
@@ -4116,15 +4295,15 @@ msgstr "Sammelign felter"
msgid "Match Items"
msgstr "Sammenlign varer"
-#: common/views.py:401
+#: common/views.py:397
msgid "Fields matching failed"
msgstr "Matching av felter mislyktes"
-#: common/views.py:464
+#: common/views.py:460
msgid "Parts imported"
msgstr "Deler importert"
-#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27
+#: common/views.py:490 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
@@ -4155,429 +4334,429 @@ msgstr "Intern del er aktiv"
msgid "Supplier is Active"
msgstr "Leverandør er aktiv"
-#: company/models.py:100 company/models.py:371
+#: company/models.py:97 company/models.py:368
#: company/templates/company/company_base.html:8
#: company/templates/company/company_base.html:12 stock/api.py:812
-#: templates/InvenTree/search.html:178 templates/js/translated/company.js:496
+#: templates/InvenTree/search.html:178 templates/js/translated/company.js:497
msgid "Company"
msgstr "Firma"
-#: company/models.py:101 company/views.py:51
+#: company/models.py:98 company/views.py:51
#: templates/js/translated/search.js:192
msgid "Companies"
msgstr "Firmaer"
-#: company/models.py:117
+#: company/models.py:114
msgid "Company description"
msgstr "Beskrivelse av firma"
-#: company/models.py:118
+#: company/models.py:115
msgid "Description of the company"
msgstr "Beskrivelse av firmaet"
-#: company/models.py:123 company/templates/company/company_base.html:106
+#: company/models.py:120 company/templates/company/company_base.html:106
#: templates/InvenTree/settings/plugin_settings.html:54
-#: templates/js/translated/company.js:532
+#: templates/js/translated/company.js:533
msgid "Website"
msgstr "Nettside"
-#: company/models.py:123
+#: company/models.py:120
msgid "Company website URL"
msgstr "Bedriftens nettside URL"
-#: company/models.py:128
+#: company/models.py:125
msgid "Phone number"
msgstr "Telefonnummer"
-#: company/models.py:130
+#: company/models.py:127
msgid "Contact phone number"
msgstr "Kontakt-telefonnummer"
-#: company/models.py:137
+#: company/models.py:134
msgid "Contact email address"
msgstr "Kontakt e-post"
-#: company/models.py:142 company/models.py:275
-#: company/templates/company/company_base.html:145 order/models.py:342
-#: order/templates/order/order_base.html:208
-#: order/templates/order/return_order_base.html:177
-#: order/templates/order/sales_order_base.html:221
+#: company/models.py:139 company/models.py:272
+#: company/templates/company/company_base.html:145 order/models.py:349
+#: order/templates/order/order_base.html:217
+#: order/templates/order/return_order_base.html:178
+#: order/templates/order/sales_order_base.html:222
msgid "Contact"
msgstr "Kontakt"
-#: company/models.py:144
+#: company/models.py:141
msgid "Point of contact"
msgstr "Kontaktpunkt"
-#: company/models.py:150
+#: company/models.py:147
msgid "Link to external company information"
msgstr "Link til ekstern bedriftsinformasjon"
-#: company/models.py:163
+#: company/models.py:160
msgid "Is this company active?"
msgstr "Er firmaet aktivt?"
-#: company/models.py:168
+#: company/models.py:165
msgid "Is customer"
msgstr "Er kunde"
-#: company/models.py:169
+#: company/models.py:166
msgid "Do you sell items to this company?"
msgstr "Selger du varer til dette firmaet?"
-#: company/models.py:174
+#: company/models.py:171
msgid "Is supplier"
msgstr "Er leverandør"
-#: company/models.py:175
+#: company/models.py:172
msgid "Do you purchase items from this company?"
msgstr "Kjøper du varer fra dette firmaet?"
-#: company/models.py:180
+#: company/models.py:177
msgid "Is manufacturer"
msgstr "Er produsent"
-#: company/models.py:181
+#: company/models.py:178
msgid "Does this company manufacture parts?"
msgstr "Produserer dette firmaet deler?"
-#: company/models.py:189
+#: company/models.py:186
msgid "Default currency used for this company"
msgstr "Standardvaluta brukt for dette firmaet"
-#: company/models.py:314 company/templates/company/company_base.html:124
-#: order/models.py:352 order/templates/order/order_base.html:215
-#: order/templates/order/return_order_base.html:184
-#: order/templates/order/sales_order_base.html:228
+#: company/models.py:311 company/templates/company/company_base.html:124
+#: order/models.py:359 order/templates/order/order_base.html:224
+#: order/templates/order/return_order_base.html:185
+#: order/templates/order/sales_order_base.html:229
msgid "Address"
msgstr "Adresse"
-#: company/models.py:315 company/templates/company/sidebar.html:35
+#: company/models.py:312 company/templates/company/sidebar.html:35
msgid "Addresses"
msgstr "Adresser"
-#: company/models.py:372
+#: company/models.py:369
msgid "Select company"
msgstr "Velg selskap"
-#: company/models.py:377
+#: company/models.py:374
msgid "Address title"
msgstr "Adressetittel"
-#: company/models.py:378
+#: company/models.py:375
msgid "Title describing the address entry"
msgstr "Tittel som beskriver addressen"
-#: company/models.py:384
+#: company/models.py:381
msgid "Primary address"
msgstr "Hovedadresse"
-#: company/models.py:385
+#: company/models.py:382
msgid "Set as primary address"
msgstr "Sett som hovedadresse"
-#: company/models.py:390 templates/js/translated/company.js:914
-#: templates/js/translated/company.js:971
+#: company/models.py:387 templates/js/translated/company.js:915
+#: templates/js/translated/company.js:972
msgid "Line 1"
msgstr "Linje 1"
-#: company/models.py:391
+#: company/models.py:388
msgid "Address line 1"
msgstr "Adresselinje 1"
-#: company/models.py:397 templates/js/translated/company.js:915
-#: templates/js/translated/company.js:977
+#: company/models.py:394 templates/js/translated/company.js:916
+#: templates/js/translated/company.js:978
msgid "Line 2"
msgstr "Linje 2"
-#: company/models.py:398
+#: company/models.py:395
msgid "Address line 2"
msgstr "Adresselinje 2"
-#: company/models.py:404 company/models.py:405
-#: templates/js/translated/company.js:983
+#: company/models.py:401 company/models.py:402
+#: templates/js/translated/company.js:984
msgid "Postal code"
msgstr "Postnummer"
-#: company/models.py:411
+#: company/models.py:408
msgid "City/Region"
msgstr "Poststed/område"
-#: company/models.py:412
+#: company/models.py:409
msgid "Postal code city/region"
msgstr "Postnummerets by/område"
-#: company/models.py:418
+#: company/models.py:415
msgid "State/Province"
msgstr "Delstat/provins"
-#: company/models.py:419
+#: company/models.py:416
msgid "State or province"
msgstr "Delstat eller provins"
-#: company/models.py:425 templates/js/translated/company.js:1001
+#: company/models.py:422 templates/js/translated/company.js:1002
msgid "Country"
msgstr "Land"
-#: company/models.py:426
+#: company/models.py:423
msgid "Address country"
msgstr "Adressens land"
-#: company/models.py:432
+#: company/models.py:429
msgid "Courier shipping notes"
msgstr "Notater til transportør"
-#: company/models.py:433
+#: company/models.py:430
msgid "Notes for shipping courier"
msgstr "Notater for transportør"
-#: company/models.py:439
+#: company/models.py:436
msgid "Internal shipping notes"
msgstr "Interne fraktnotater"
-#: company/models.py:440
+#: company/models.py:437
msgid "Shipping notes for internal use"
msgstr "Fraktnotater for internt bruk"
-#: company/models.py:447
+#: company/models.py:444
msgid "Link to address information (external)"
msgstr "Lenke til adresseinformasjon (ekstern)"
-#: company/models.py:470 company/models.py:587 company/models.py:811
+#: company/models.py:467 company/models.py:584 company/models.py:808
#: company/templates/company/manufacturer_part.html:7
#: company/templates/company/manufacturer_part.html:24
-#: stock/templates/stock/item_base.html:217
+#: stock/templates/stock/item_base.html:214
msgid "Manufacturer Part"
msgstr "Produsentdeler"
-#: company/models.py:487 company/models.py:779 stock/models.py:787
-#: stock/serializers.py:445 stock/templates/stock/item_base.html:142
+#: company/models.py:484 company/models.py:776 stock/models.py:864
+#: stock/serializers.py:455 stock/templates/stock/item_base.html:139
#: templates/js/translated/bom.js:622
msgid "Base Part"
msgstr "Basisdel"
-#: company/models.py:489 company/models.py:781
+#: company/models.py:486 company/models.py:778
msgid "Select part"
msgstr "Velg del"
-#: company/models.py:498 company/templates/company/company_base.html:82
+#: company/models.py:495 company/templates/company/company_base.html:82
#: company/templates/company/manufacturer_part.html:90
-#: company/templates/company/supplier_part.html:145 part/serializers.py:554
-#: stock/templates/stock/item_base.html:207
-#: templates/js/translated/company.js:507
-#: templates/js/translated/company.js:1118
-#: templates/js/translated/company.js:1296
-#: templates/js/translated/company.js:1611
+#: company/templates/company/supplier_part.html:146 part/serializers.py:598
+#: stock/templates/stock/item_base.html:204
+#: templates/js/translated/company.js:508
+#: templates/js/translated/company.js:1119
+#: templates/js/translated/company.js:1297
+#: templates/js/translated/company.js:1612
#: templates/js/translated/table_filters.js:812
msgid "Manufacturer"
msgstr "Produsent"
-#: company/models.py:499
+#: company/models.py:496
msgid "Select manufacturer"
msgstr "Velg produsent"
-#: company/models.py:505 company/templates/company/manufacturer_part.html:101
-#: company/templates/company/supplier_part.html:153 order/serializers.py:556
-#: part/serializers.py:564 templates/js/translated/company.js:351
-#: templates/js/translated/company.js:1117
-#: templates/js/translated/company.js:1312
-#: templates/js/translated/company.js:1630 templates/js/translated/part.js:1807
-#: templates/js/translated/purchase_order.js:1921
-#: templates/js/translated/purchase_order.js:2123
+#: company/models.py:502 company/templates/company/manufacturer_part.html:101
+#: company/templates/company/supplier_part.html:154 order/serializers.py:641
+#: part/serializers.py:608 templates/js/translated/company.js:352
+#: templates/js/translated/company.js:1118
+#: templates/js/translated/company.js:1313
+#: templates/js/translated/company.js:1631 templates/js/translated/part.js:1807
+#: templates/js/translated/purchase_order.js:1905
+#: templates/js/translated/purchase_order.js:2107
msgid "MPN"
msgstr "MPN"
-#: company/models.py:513
+#: company/models.py:510
msgid "URL for external manufacturer part link"
msgstr "URL for ekstern produsentdel-lenke"
-#: company/models.py:522
+#: company/models.py:519
msgid "Manufacturer part description"
msgstr "Produsentens delbeskrivelse"
-#: company/models.py:575
+#: company/models.py:572
msgid "Manufacturer Part Parameter"
msgstr "Produsentdel parameter"
-#: company/models.py:594
+#: company/models.py:591
msgid "Parameter name"
msgstr "Parameternavn"
-#: company/models.py:600 report/templates/report/inventree_test_report.html:104
-#: stock/models.py:2550 templates/js/translated/company.js:1166
-#: templates/js/translated/company.js:1419 templates/js/translated/part.js:1499
+#: company/models.py:597 report/templates/report/inventree_test_report.html:104
+#: stock/models.py:2666 templates/js/translated/company.js:1167
+#: templates/js/translated/company.js:1420 templates/js/translated/part.js:1499
#: templates/js/translated/stock.js:1607
msgid "Value"
msgstr "Verdi"
-#: company/models.py:601
+#: company/models.py:598
msgid "Parameter value"
msgstr "Parameterverdi"
-#: company/models.py:608 company/templates/company/supplier_part.html:168
-#: part/admin.py:57 part/models.py:1147 part/models.py:3771
-#: part/templates/part/part_base.html:293
-#: templates/js/translated/company.js:1425 templates/js/translated/part.js:1518
+#: company/models.py:605 company/templates/company/supplier_part.html:169
+#: part/admin.py:57 part/models.py:1208 part/models.py:3822
+#: part/templates/part/part_base.html:301
+#: templates/js/translated/company.js:1426 templates/js/translated/part.js:1518
#: templates/js/translated/part.js:1622 templates/js/translated/part.js:2376
msgid "Units"
msgstr "Enheter"
-#: company/models.py:609
+#: company/models.py:606
msgid "Parameter units"
msgstr "Parameterenheter"
-#: company/models.py:662 company/templates/company/supplier_part.html:7
-#: company/templates/company/supplier_part.html:24 order/api.py:442
-#: order/serializers.py:491 stock/models.py:798
-#: stock/templates/stock/item_base.html:233
-#: templates/js/translated/build.js:1052
-#: templates/js/translated/company.js:1600
-#: templates/js/translated/purchase_order.js:752
-#: templates/js/translated/stock.js:2365
+#: company/models.py:659 company/templates/company/supplier_part.html:8
+#: company/templates/company/supplier_part.html:25 order/api.py:392
+#: order/serializers.py:576 stock/models.py:875
+#: stock/templates/stock/item_base.html:230
+#: templates/js/translated/build.js:1055
+#: templates/js/translated/company.js:1601
+#: templates/js/translated/purchase_order.js:735
+#: templates/js/translated/stock.js:2366
msgid "Supplier Part"
msgstr "Leverandørdel"
-#: company/models.py:719
+#: company/models.py:716
msgid "Pack units must be compatible with the base part units"
msgstr "Pakkeenhetene må være komptible med delens basisenhet"
-#: company/models.py:726
+#: company/models.py:723
msgid "Pack units must be greater than zero"
msgstr "Pakkeenhet må være mer enn null"
-#: company/models.py:740
+#: company/models.py:737
msgid "Linked manufacturer part must reference the same base part"
msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel"
-#: company/models.py:789 company/templates/company/company_base.html:87
-#: company/templates/company/supplier_part.html:129 order/models.py:491
-#: order/templates/order/order_base.html:141 part/bom.py:280 part/bom.py:318
-#: part/serializers.py:538 plugin/builtin/suppliers/digikey.py:25
+#: company/models.py:786 company/templates/company/company_base.html:87
+#: company/templates/company/supplier_part.html:130 order/models.py:503
+#: order/templates/order/order_base.html:150 part/bom.py:279 part/bom.py:314
+#: part/serializers.py:582 plugin/builtin/suppliers/digikey.py:25
#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24
-#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224
+#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:221
#: templates/email/overdue_purchase_order.html:16
-#: templates/js/translated/company.js:350
-#: templates/js/translated/company.js:511
-#: templates/js/translated/company.js:1584 templates/js/translated/part.js:1775
+#: templates/js/translated/company.js:351
+#: templates/js/translated/company.js:512
+#: templates/js/translated/company.js:1585 templates/js/translated/part.js:1775
#: templates/js/translated/pricing.js:498
-#: templates/js/translated/purchase_order.js:1759
+#: templates/js/translated/purchase_order.js:1743
#: templates/js/translated/table_filters.js:816
msgid "Supplier"
msgstr "Leverandør"
-#: company/models.py:790
+#: company/models.py:787
msgid "Select supplier"
msgstr "Velg leverandør"
-#: company/models.py:796 part/serializers.py:549
+#: company/models.py:793 part/serializers.py:593
msgid "Supplier stock keeping unit"
msgstr "Leverandørens lagerbeholdningsenhet"
-#: company/models.py:802
+#: company/models.py:799
msgid "Is this supplier part active?"
msgstr "Er denne leverandørdelen aktiv?"
-#: company/models.py:812
+#: company/models.py:809
msgid "Select manufacturer part"
msgstr "Velg produsentdel"
-#: company/models.py:819
+#: company/models.py:816
msgid "URL for external supplier part link"
msgstr "URL for ekstern leverandørdel-lenke"
-#: company/models.py:828
+#: company/models.py:825
msgid "Supplier part description"
msgstr "Leverandørens delbeskrivelse"
-#: company/models.py:835 company/templates/company/supplier_part.html:187
-#: order/serializers.py:698 part/admin.py:415 part/models.py:4288
+#: company/models.py:832 company/templates/company/supplier_part.html:188
+#: order/serializers.py:783 part/admin.py:415 part/models.py:4345
#: part/templates/part/upload_bom.html:59
#: report/templates/report/inventree_bill_of_materials_report.html:140
#: report/templates/report/inventree_purchase_order_report.html:32
#: report/templates/report/inventree_return_order_report.html:27
#: report/templates/report/inventree_sales_order_report.html:32
#: report/templates/report/inventree_stock_location_report.html:105
-#: stock/serializers.py:776 templates/js/translated/purchase_order.js:1185
-#: templates/js/translated/purchase_order.js:1344
+#: stock/serializers.py:807 templates/js/translated/purchase_order.js:1168
+#: templates/js/translated/purchase_order.js:1327
msgid "Note"
msgstr "Notat"
-#: company/models.py:844 part/models.py:2117
+#: company/models.py:841 part/models.py:2177
msgid "base cost"
msgstr "grunnkostnad"
-#: company/models.py:845 part/models.py:2118
+#: company/models.py:842 part/models.py:2178
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimum betaling (f.eks. lageravgift)"
-#: company/models.py:853
+#: company/models.py:850
msgid "Part packaging"
msgstr "Delemballasje"
-#: company/models.py:858 templates/js/translated/company.js:1651
+#: company/models.py:855 templates/js/translated/company.js:1652
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:311
-#: templates/js/translated/purchase_order.js:841
-#: templates/js/translated/purchase_order.js:1103
-#: templates/js/translated/purchase_order.js:2154
-#: templates/js/translated/purchase_order.js:2171
+#: templates/js/translated/purchase_order.js:294
+#: templates/js/translated/purchase_order.js:824
+#: templates/js/translated/purchase_order.js:1086
+#: templates/js/translated/purchase_order.js:2138
+#: templates/js/translated/purchase_order.js:2155
msgid "Pack Quantity"
msgstr "Pakkeantall"
-#: company/models.py:860
+#: company/models.py:857
msgid "Total quantity supplied in a single pack. Leave empty for single items."
msgstr "Totalt antall i en enkelt pakke. La være tom for enkeltenheter."
-#: company/models.py:879 part/models.py:2124
+#: company/models.py:876 part/models.py:2184
msgid "multiple"
msgstr "flere"
-#: company/models.py:880
+#: company/models.py:877
msgid "Order multiple"
msgstr "Bestill flere"
-#: company/models.py:892
+#: company/models.py:889
msgid "Quantity available from supplier"
msgstr "Antall tilgjengelig fra leverandør"
-#: company/models.py:898
+#: company/models.py:895
msgid "Availability Updated"
msgstr "Tilgjengelighet oppdatert"
-#: company/models.py:899
+#: company/models.py:896
msgid "Date of last update of availability data"
msgstr "Dato for siste oppdatering av tilgjengelighetsdata"
-#: company/models.py:1027
+#: company/models.py:1024
msgid "Supplier Price Break"
msgstr "Leverandørens prisbrudd"
-#: company/serializers.py:174
+#: company/serializers.py:178
msgid "Default currency used for this supplier"
msgstr "Standardvaluta brukt for denne leverandøren"
-#: company/serializers.py:210
+#: company/serializers.py:214
msgid "Company Name"
msgstr "Bedriftsnavn"
-#: company/serializers.py:393 part/admin.py:126 part/serializers.py:898
-#: part/templates/part/part_base.html:197
-#: templates/js/translated/company.js:1689
+#: company/serializers.py:397 part/admin.py:126 part/serializers.py:950
+#: part/templates/part/part_base.html:198 stock/serializers.py:474
+#: templates/js/translated/company.js:1690
#: templates/js/translated/table_filters.js:362
msgid "In Stock"
msgstr "På lager"
#: company/templates/company/company_base.html:16
-#: part/templates/part/part_base.html:146
-#: templates/js/translated/company.js:1287
-#: templates/js/translated/company.js:1575
-#: templates/js/translated/model_renderers.js:313
+#: part/templates/part/part_base.html:147
+#: templates/js/translated/company.js:1288
+#: templates/js/translated/company.js:1576
+#: templates/js/translated/model_renderers.js:316
#: templates/js/translated/part.js:817 templates/js/translated/part.js:1225
msgid "Inactive"
msgstr "Inaktiv"
#: company/templates/company/company_base.html:27
-#: templates/js/translated/purchase_order.js:242
+#: templates/js/translated/purchase_order.js:224
msgid "Create Purchase Order"
msgstr "Opprett Innkjøpsordre"
@@ -4590,7 +4769,7 @@ msgid "Edit company information"
msgstr "Rediger firmainformasjon"
#: company/templates/company/company_base.html:39
-#: templates/js/translated/company.js:445
+#: templates/js/translated/company.js:446
msgid "Edit Company"
msgstr "Rediger Firma"
@@ -4605,11 +4784,12 @@ msgstr "Slett Firma"
#: company/templates/company/company_base.html:53
#: company/templates/company/manufacturer_part.html:51
-#: company/templates/company/supplier_part.html:83
+#: company/templates/company/supplier_part.html:84
#: part/templates/part/part_thumb.html:20
#: report/templates/report/inventree_build_order_report.html:98
#: report/templates/report/inventree_purchase_order_report.html:40
#: report/templates/report/inventree_sales_order_report.html:40
+#: report/templates/report/inventree_sales_order_shipment_report.html:37
#: report/templates/report/inventree_test_report.html:84
#: report/templates/report/inventree_test_report.html:162
msgid "Part image"
@@ -4630,16 +4810,16 @@ msgstr "Last ned bilde fra URL"
msgid "Delete image"
msgstr "Slett bilde"
-#: company/templates/company/company_base.html:92 order/models.py:990
-#: order/models.py:2147 order/templates/order/return_order_base.html:134
-#: order/templates/order/sales_order_base.html:151 stock/models.py:840
-#: stock/models.py:841 stock/serializers.py:1329
-#: stock/templates/stock/item_base.html:405
+#: company/templates/company/company_base.html:92 order/models.py:1017
+#: order/models.py:2186 order/templates/order/return_order_base.html:135
+#: order/templates/order/sales_order_base.html:152 stock/models.py:917
+#: stock/models.py:918 stock/serializers.py:1360
+#: stock/templates/stock/item_base.html:402
#: templates/email/overdue_sales_order.html:16
-#: templates/js/translated/company.js:503
+#: templates/js/translated/company.js:504
#: templates/js/translated/return_order.js:295
-#: templates/js/translated/sales_order.js:820
-#: templates/js/translated/stock.js:3043
+#: templates/js/translated/sales_order.js:779
+#: templates/js/translated/stock.js:3044
#: templates/js/translated/table_filters.js:820
msgid "Customer"
msgstr "Kunde"
@@ -4653,7 +4833,7 @@ msgid "Phone"
msgstr "Telefon"
#: company/templates/company/company_base.html:211
-#: part/templates/part/part_base.html:536
+#: part/templates/part/part_base.html:544
msgid "Remove Image"
msgstr "Fjern Bilde"
@@ -4662,19 +4842,19 @@ msgid "Remove associated image from this company"
msgstr "Fjern tilknyttet bilde fra dette firmaet"
#: company/templates/company/company_base.html:214
-#: part/templates/part/part_base.html:539
+#: part/templates/part/part_base.html:547
#: templates/InvenTree/settings/user.html:88
#: templates/InvenTree/settings/user_sso.html:43
msgid "Remove"
msgstr "Fjern"
#: company/templates/company/company_base.html:243
-#: part/templates/part/part_base.html:568
+#: part/templates/part/part_base.html:576
msgid "Upload Image"
msgstr "Last opp bilde"
#: company/templates/company/company_base.html:258
-#: part/templates/part/part_base.html:622
+#: part/templates/part/part_base.html:630
msgid "Download Image"
msgstr "Last ned Bilde"
@@ -4714,7 +4894,7 @@ msgstr "Leverandørs lagerbeholdning"
#: 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/order_base.html:14
#: order/templates/order/purchase_orders.html:8
#: order/templates/order/purchase_orders.html:12
#: part/templates/part/detail.html:122 part/templates/part/part_sidebar.html:35
@@ -4737,7 +4917,7 @@ msgstr "Ny innkjøpsordre"
#: company/templates/company/detail.html:101
#: company/templates/company/sidebar.html:21
-#: order/templates/order/sales_order_base.html:13
+#: order/templates/order/sales_order_base.html:14
#: order/templates/order/sales_orders.html:8
#: order/templates/order/sales_orders.html:15
#: part/templates/part/detail.html:143 part/templates/part/part_sidebar.html:39
@@ -4764,7 +4944,7 @@ msgstr "Tildelt lagerbeholdning"
#: company/templates/company/detail.html:142
#: company/templates/company/sidebar.html:29
-#: order/templates/order/return_order_base.html:13
+#: order/templates/order/return_order_base.html:14
#: order/templates/order/return_orders.html:8
#: order/templates/order/return_orders.html:15
#: templates/InvenTree/settings/sidebar.html:61
@@ -4811,24 +4991,24 @@ msgid "Manufacturers"
msgstr "Produsenter"
#: company/templates/company/manufacturer_part.html:35
-#: company/templates/company/supplier_part.html:227
-#: part/templates/part/detail.html:125 part/templates/part/part_base.html:83
+#: company/templates/company/supplier_part.html:228
+#: part/templates/part/detail.html:125 part/templates/part/part_base.html:84
msgid "Order part"
msgstr "Bestill del"
#: company/templates/company/manufacturer_part.html:39
-#: templates/js/translated/company.js:1343
+#: templates/js/translated/company.js:1344
msgid "Edit manufacturer part"
msgstr "Endre produsentdel"
#: company/templates/company/manufacturer_part.html:43
-#: templates/js/translated/company.js:1344
+#: templates/js/translated/company.js:1345
msgid "Delete manufacturer part"
msgstr "Slett produsentdel"
#: company/templates/company/manufacturer_part.html:65
-#: company/templates/company/supplier_part.html:97 order/api.py:448
-#: order/serializers.py:564
+#: company/templates/company/supplier_part.html:98 order/api.py:411
+#: order/serializers.py:649
msgid "Internal Part"
msgstr "Intern del"
@@ -4837,8 +5017,8 @@ 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:31
-#: part/admin.py:122 part/serializers.py:904
+#: company/templates/company/supplier_part.html:16 company/views.py:31
+#: part/admin.py:122 part/serializers.py:956
#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190
#: templates/navbar.html:48
msgid "Suppliers"
@@ -4887,112 +5067,113 @@ msgstr "Tildelte lagervarer"
msgid "Contacts"
msgstr "Kontakter"
-#: company/templates/company/supplier_part.html:50
-#: templates/js/translated/company.js:1526
+#: company/templates/company/supplier_part.html:51
+#: templates/js/translated/company.js:1527
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:228
+#: company/templates/company/supplier_part.html:57
+#: company/templates/company/supplier_part.html:229
#: part/templates/part/detail.html:126
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
-#: templates/js/translated/company.js:294
+#: company/templates/company/supplier_part.html:65
+#: templates/js/translated/company.js:295
msgid "Edit Supplier Part"
msgstr "Rediger Leverandørdel"
-#: company/templates/company/supplier_part.html:68
#: company/templates/company/supplier_part.html:69
-#: templates/js/translated/company.js:269
+#: company/templates/company/supplier_part.html:70
+#: templates/js/translated/company.js:270
msgid "Duplicate Supplier Part"
msgstr "Dupliser Leverandørdel"
-#: company/templates/company/supplier_part.html:73
+#: company/templates/company/supplier_part.html:74
msgid "Delete Supplier Part"
msgstr "Slett Leverandørdel"
-#: company/templates/company/supplier_part.html:74
+#: company/templates/company/supplier_part.html:75
msgid "Delete Supplier Part"
msgstr "Slett Leverandørdel"
-#: company/templates/company/supplier_part.html:133
+#: company/templates/company/supplier_part.html:134
+#: order/templates/order/order_base.html:155
msgid "No supplier information available"
msgstr "Ingen leverandørinformasjon tilgjengelig"
-#: company/templates/company/supplier_part.html:139 order/serializers.py:553
-#: part/bom.py:287 part/bom.py:319 part/serializers.py:548
-#: templates/js/translated/company.js:349 templates/js/translated/part.js:1793
+#: company/templates/company/supplier_part.html:140 order/serializers.py:638
+#: part/bom.py:286 part/bom.py:315 part/serializers.py:592
+#: templates/js/translated/company.js:350 templates/js/translated/part.js:1793
#: templates/js/translated/pricing.js:510
-#: templates/js/translated/purchase_order.js:1920
-#: templates/js/translated/purchase_order.js:2098
+#: templates/js/translated/purchase_order.js:1904
+#: templates/js/translated/purchase_order.js:2082
msgid "SKU"
msgstr "SKU-kode"
-#: company/templates/company/supplier_part.html:206
+#: company/templates/company/supplier_part.html:207
msgid "Supplier Part Stock"
msgstr "Leverandørs lagerbeholdning"
-#: company/templates/company/supplier_part.html:209
-#: part/templates/part/detail.html:24 stock/templates/stock/location.html:204
+#: company/templates/company/supplier_part.html:210
+#: part/templates/part/detail.html:24 stock/templates/stock/location.html:205
msgid "Create new stock item"
msgstr "Opprett ny lagervare"
-#: company/templates/company/supplier_part.html:210
-#: part/templates/part/detail.html:25 stock/templates/stock/location.html:205
+#: company/templates/company/supplier_part.html:211
+#: part/templates/part/detail.html:25 stock/templates/stock/location.html:206
#: templates/js/translated/stock.js:543
msgid "New Stock Item"
msgstr "Ny Lagervare"
-#: company/templates/company/supplier_part.html:223
+#: company/templates/company/supplier_part.html:224
msgid "Supplier Part Orders"
msgstr "Leverandørdelordre"
-#: company/templates/company/supplier_part.html:246
+#: company/templates/company/supplier_part.html:247
msgid "Pricing Information"
msgstr "Prisinformasjon"
-#: company/templates/company/supplier_part.html:251
-#: templates/js/translated/company.js:398
+#: company/templates/company/supplier_part.html:252
+#: templates/js/translated/company.js:399
#: templates/js/translated/pricing.js:684
msgid "Add Price Break"
msgstr "Legg til Prisbrudd"
-#: company/templates/company/supplier_part.html:270
+#: company/templates/company/supplier_part.html:271
msgid "Supplier Part Notes"
msgstr "Notater for leverandørdeler"
-#: company/templates/company/supplier_part.html:305
+#: company/templates/company/supplier_part.html:306
msgid "Supplier Part QR Code"
msgstr ""
-#: company/templates/company/supplier_part.html:316
+#: company/templates/company/supplier_part.html:317
msgid "Link Barcode to Supplier Part"
msgstr ""
-#: company/templates/company/supplier_part.html:388
+#: company/templates/company/supplier_part.html:389
msgid "Update Part Availability"
msgstr ""
#: company/templates/company/supplier_part_sidebar.html:5
-#: part/serializers.py:902 part/stocktake.py:223
+#: part/serializers.py:954 part/stocktake.py:223
#: part/templates/part/category.html:180
#: part/templates/part/category_sidebar.html:17 stock/admin.py:68
-#: stock/serializers.py:1014 stock/serializers.py:1192
-#: stock/templates/stock/location.html:167
-#: stock/templates/stock/location.html:188
-#: stock/templates/stock/location.html:200
+#: stock/serializers.py:1045 stock/serializers.py:1223
+#: stock/templates/stock/location.html:168
+#: stock/templates/stock/location.html:189
+#: stock/templates/stock/location.html:201
#: stock/templates/stock/location_sidebar.html:7
#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1067
-#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2850
+#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2851
#: users/models.py:206
msgid "Stock Items"
msgstr "Lagervarer"
@@ -5022,99 +5203,99 @@ msgstr "Ny Kunde"
msgid "New Company"
msgstr "Nytt Firma"
-#: generic/states/tests.py:18 order/status_codes.py:13
+#: generic/states/fields.py:118
+msgid "Custom status key"
+msgstr ""
+
+#: generic/states/fields.py:119
+msgid "Additional status information for this item"
+msgstr ""
+
+#: generic/states/tests.py:22 order/status_codes.py:13
msgid "Placed"
msgstr "Plassert"
-#: importer/mixins.py:263
+#: importer/mixins.py:261
msgid "Invalid export format"
msgstr ""
-#: importer/models.py:59
-msgid "Timestamp"
-msgstr ""
-
-#: importer/models.py:64
+#: importer/models.py:65
msgid "Data file to import"
msgstr ""
-#: importer/models.py:73 templates/js/translated/tables.js:558
+#: importer/models.py:74 templates/js/translated/tables.js:558
msgid "Columns"
msgstr ""
-#: importer/models.py:84
+#: importer/models.py:85
msgid "Import status"
msgstr ""
-#: importer/models.py:94
+#: importer/models.py:95
msgid "Field Defaults"
msgstr ""
-#: importer/models.py:101
+#: importer/models.py:102
msgid "Field Overrides"
msgstr ""
-#: importer/models.py:108
+#: importer/models.py:109
msgid "Field Filters"
msgstr ""
-#: importer/models.py:230
+#: importer/models.py:239
msgid "Some required fields have not been mapped"
msgstr ""
-#: importer/models.py:387
+#: importer/models.py:396
msgid "Column is already mapped to a database field"
msgstr ""
-#: importer/models.py:392
+#: importer/models.py:401
msgid "Field is already mapped to a data column"
msgstr ""
-#: importer/models.py:401
+#: importer/models.py:410
msgid "Column mapping must be linked to a valid import session"
msgstr ""
-#: importer/models.py:406
+#: importer/models.py:415
msgid "Column does not exist in the data file"
msgstr ""
-#: importer/models.py:413
+#: importer/models.py:422
msgid "Field does not exist in the target model"
msgstr ""
-#: importer/models.py:417
+#: importer/models.py:426
msgid "Selected field is read-only"
msgstr ""
-#: importer/models.py:422 importer/models.py:493
+#: importer/models.py:431 importer/models.py:502
msgid "Import Session"
msgstr ""
-#: importer/models.py:426
+#: importer/models.py:435
msgid "Field"
msgstr ""
-#: importer/models.py:428
+#: importer/models.py:437
msgid "Column"
msgstr ""
-#: importer/models.py:497
+#: importer/models.py:506
msgid "Row Index"
msgstr ""
-#: importer/models.py:500
+#: importer/models.py:509
msgid "Original row data"
msgstr ""
-#: importer/models.py:503 part/models.py:3951
-msgid "Data"
-msgstr ""
-
-#: importer/models.py:505 machine/models.py:110
+#: importer/models.py:514 machine/models.py:110
msgid "Errors"
msgstr ""
-#: importer/models.py:507 part/api.py:873
+#: importer/models.py:516 part/api.py:857
msgid "Valid"
msgstr "Gyldig"
@@ -5166,19 +5347,19 @@ msgstr ""
msgid "Row has already been completed"
msgstr ""
-#: importer/status_codes.py:11
+#: importer/status_codes.py:13
msgid "Initializing"
msgstr ""
-#: importer/status_codes.py:12
+#: importer/status_codes.py:18
msgid "Mapping Columns"
msgstr ""
-#: importer/status_codes.py:13
+#: importer/status_codes.py:21
msgid "Importing Data"
msgstr ""
-#: importer/status_codes.py:16
+#: importer/status_codes.py:24
msgid "Processing Data"
msgstr ""
@@ -5202,52 +5383,52 @@ msgstr ""
msgid "Value must be a valid dictionary object"
msgstr ""
-#: machine/machine_types/label_printer.py:215
+#: machine/machine_types/label_printer.py:216
msgid "Copies"
msgstr ""
-#: machine/machine_types/label_printer.py:216
+#: machine/machine_types/label_printer.py:217
msgid "Number of copies to print for each label"
msgstr ""
-#: machine/machine_types/label_printer.py:231
+#: machine/machine_types/label_printer.py:232
msgid "Connected"
msgstr ""
-#: machine/machine_types/label_printer.py:232 order/api.py:1410
-#: templates/js/translated/sales_order.js:1078
+#: machine/machine_types/label_printer.py:233 order/api.py:1532
+#: templates/js/translated/sales_order.js:1044
msgid "Unknown"
msgstr "Ukjent"
-#: machine/machine_types/label_printer.py:233
+#: machine/machine_types/label_printer.py:234
msgid "Printing"
msgstr ""
-#: machine/machine_types/label_printer.py:234
+#: machine/machine_types/label_printer.py:235
msgid "No media"
msgstr ""
-#: machine/machine_types/label_printer.py:235
+#: machine/machine_types/label_printer.py:236
msgid "Paper jam"
msgstr ""
-#: machine/machine_types/label_printer.py:236
+#: machine/machine_types/label_printer.py:237
msgid "Disconnected"
msgstr ""
-#: machine/machine_types/label_printer.py:243
+#: machine/machine_types/label_printer.py:244
msgid "Label Printer"
msgstr ""
-#: machine/machine_types/label_printer.py:244
+#: machine/machine_types/label_printer.py:245
msgid "Directly print labels for various items."
msgstr ""
-#: machine/machine_types/label_printer.py:250
+#: machine/machine_types/label_printer.py:251
msgid "Printer Location"
msgstr ""
-#: machine/machine_types/label_printer.py:251
+#: machine/machine_types/label_printer.py:252
msgid "Scope the printer to a specific location"
msgstr ""
@@ -5307,79 +5488,75 @@ msgstr ""
#: report/templates/report/inventree_purchase_order_report.html:31
#: report/templates/report/inventree_sales_order_report.html:31
#: templates/js/translated/order.js:352
-#: templates/js/translated/purchase_order.js:2195
-#: templates/js/translated/sales_order.js:1883
+#: templates/js/translated/purchase_order.js:2179
+#: templates/js/translated/sales_order.js:1864
msgid "Total Price"
msgstr "Total pris"
-#: order/api.py:80 order/api.py:151 order/serializers.py:93
-#: order/templates/order/order_base.html:123
-#: order/templates/order/return_order_base.html:116
-#: order/templates/order/sales_order_base.html:125
+#: order/api.py:78 order/api.py:149 order/serializers.py:124
+#: order/templates/order/order_base.html:124
+#: order/templates/order/return_order_base.html:117
+#: order/templates/order/sales_order_base.html:126
msgid "Order Status"
msgstr "Ordrestatus"
-#: order/api.py:88 order/templates/order/order_base.html:111
-#: order/templates/order/return_order_base.html:104
-#: order/templates/order/sales_order_base.html:113
+#: order/api.py:86 order/templates/order/order_base.html:112
+#: order/templates/order/return_order_base.html:105
+#: order/templates/order/sales_order_base.html:114
msgid "Order Reference"
msgstr "Ordrereferanse"
-#: order/api.py:116 templates/js/translated/table_filters.js:93
+#: order/api.py:114 order/api.py:1022
+#: templates/js/translated/table_filters.js:93
#: templates/js/translated/table_filters.js:625
#: templates/js/translated/table_filters.js:651
#: templates/js/translated/table_filters.js:666
msgid "Outstanding"
msgstr ""
-#: order/api.py:132
+#: order/api.py:130
msgid "Has Project Code"
msgstr ""
-#: order/api.py:155 templates/js/translated/table_filters.js:201
+#: order/api.py:153 templates/js/translated/table_filters.js:201
#: templates/js/translated/table_filters.js:791
msgid "Has Pricing"
msgstr ""
-#: order/api.py:230
-msgid "No matching purchase order found"
-msgstr "Ingen samsvarende innkjøpsordre funnet"
-
-#: order/api.py:425 order/api.py:763 order/models.py:1484 order/models.py:1598
-#: order/models.py:1649 order/models.py:1764 order/models.py:1923
-#: order/models.py:2383 order/models.py:2439
-#: templates/js/translated/sales_order.js:1524
+#: order/api.py:375 order/api.py:771 order/api.py:986 order/models.py:1500
+#: order/models.py:1614 order/models.py:1665 order/models.py:1793
+#: order/models.py:1956 order/models.py:2422 order/models.py:2478
+#: templates/js/translated/sales_order.js:1490
msgid "Order"
msgstr "Ordre"
-#: order/api.py:429 order/api.py:784
+#: order/api.py:379 order/api.py:809
msgid "Order Complete"
msgstr ""
-#: order/api.py:452
+#: order/api.py:430
msgid "Order Pending"
msgstr ""
-#: order/api.py:1404 order/models.py:379 order/models.py:1485
-#: order/models.py:1599 order/templates/order/order_base.html:9
-#: order/templates/order/order_base.html:18
+#: order/api.py:1526 order/models.py:386 order/models.py:1501
+#: order/models.py:1615 order/templates/order/order_base.html:10
+#: order/templates/order/order_base.html:19
#: report/templates/report/inventree_purchase_order_report.html:14
-#: stock/serializers.py:120 stock/templates/stock/item_base.html:176
+#: stock/serializers.py:121 stock/templates/stock/item_base.html:173
#: templates/email/overdue_purchase_order.html:15
#: templates/js/translated/part.js:1752 templates/js/translated/pricing.js:804
-#: templates/js/translated/purchase_order.js:168
-#: templates/js/translated/purchase_order.js:753
-#: templates/js/translated/purchase_order.js:1743
-#: templates/js/translated/stock.js:2345 templates/js/translated/stock.js:2991
+#: templates/js/translated/purchase_order.js:736
+#: templates/js/translated/purchase_order.js:1727
+#: templates/js/translated/stock.js:2346 templates/js/translated/stock.js:2992
msgid "Purchase Order"
msgstr "Innkjøpsordre"
-#: order/api.py:1408 order/models.py:2091 order/models.py:2384
-#: order/models.py:2440 order/templates/order/return_order_base.html:9
-#: order/templates/order/return_order_base.html:28
+#: order/api.py:1530 order/models.py:2124 order/models.py:2423
+#: order/models.py:2479 order/templates/order/return_order_base.html:10
+#: order/templates/order/return_order_base.html:29
#: report/templates/report/inventree_return_order_report.html:13
#: templates/js/translated/return_order.js:280
-#: templates/js/translated/stock.js:3025
+#: templates/js/translated/stock.js:3026
msgid "Return Order"
msgstr "Returordre"
@@ -5387,751 +5564,782 @@ msgstr "Returordre"
msgid "Total price for this order"
msgstr "Total pris for denne ordren"
-#: order/models.py:95 order/serializers.py:71
+#: order/models.py:95 order/serializers.py:73
msgid "Order Currency"
msgstr "Ordrevaluta"
-#: order/models.py:98 order/serializers.py:72
+#: order/models.py:98 order/serializers.py:74
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:246
+#: order/models.py:243
msgid "Contact does not match selected company"
msgstr "Kontakten samsvarer ikke med valgt firma"
-#: order/models.py:289
+#: order/models.py:296
msgid "Order description (optional)"
msgstr "Ordrebeskrivelse (valgfritt)"
-#: order/models.py:298
+#: order/models.py:305
msgid "Select project code for this order"
msgstr "Velg prosjektkode for denne ordren"
-#: order/models.py:302 order/models.py:1385 order/models.py:1817
+#: order/models.py:309 order/models.py:1402 order/models.py:1846
msgid "Link to external page"
msgstr "Lenke til ekstern side"
-#: order/models.py:310
+#: order/models.py:317
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:324
+#: order/models.py:331
msgid "Created By"
msgstr "Opprettet av"
-#: order/models.py:332
+#: order/models.py:339
msgid "User or group responsible for this order"
msgstr "Bruker eller gruppe ansvarlig for ordren"
-#: order/models.py:343
+#: order/models.py:350
msgid "Point of contact for this order"
msgstr "Kontaktpunkt for denne ordren"
-#: order/models.py:353
+#: order/models.py:360
msgid "Company address for this order"
msgstr "Selskapsadresse for denne ordren"
-#: order/models.py:468 order/models.py:979
+#: order/models.py:480 order/models.py:1006
msgid "Order reference"
msgstr "Ordrereferanse"
-#: order/models.py:477
+#: order/models.py:489
msgid "Purchase order status"
msgstr "Status for innkjøpsordre"
-#: order/models.py:492
+#: order/models.py:504
msgid "Company from which the items are being ordered"
msgstr "Firma som varene blir bestilt fra"
-#: order/models.py:503 order/templates/order/order_base.html:153
-#: templates/js/translated/purchase_order.js:1772
+#: order/models.py:515 order/templates/order/order_base.html:162
+#: templates/js/translated/purchase_order.js:1756
msgid "Supplier Reference"
msgstr "Leverandørreferanse"
-#: order/models.py:504
+#: order/models.py:516
msgid "Supplier order reference code"
msgstr "Leverandørens ordrereferanse"
-#: order/models.py:513
+#: order/models.py:525
msgid "received by"
msgstr "mottatt av"
-#: order/models.py:519 order/models.py:2173
+#: order/models.py:531 order/models.py:2212
msgid "Issue Date"
msgstr "Sendt dato"
-#: order/models.py:520 order/models.py:2174
+#: order/models.py:532 order/models.py:2213
msgid "Date order was issued"
msgstr "Dato bestillingen ble sendt"
-#: order/models.py:527 order/models.py:2181
+#: order/models.py:539 order/models.py:2220
msgid "Date order was completed"
msgstr "Dato ordre ble fullført"
-#: order/models.py:571
+#: order/models.py:549 order/models.py:1552
+msgid "Destination for received items"
+msgstr ""
+
+#: order/models.py:593
msgid "Part supplier must match PO supplier"
msgstr "Delleverandør må matche PO-leverandør"
-#: order/models.py:806
+#: order/models.py:828
msgid "Quantity must be a positive number"
msgstr "Mengde må være positiv"
-#: order/models.py:991
+#: order/models.py:1018
msgid "Company to which the items are being sold"
msgstr "Firma som varene selges til"
-#: order/models.py:1003
+#: order/models.py:1030
msgid "Sales order status"
msgstr ""
-#: order/models.py:1014 order/models.py:2166
+#: order/models.py:1041 order/models.py:2205
msgid "Customer Reference "
msgstr "Kundereferanse "
-#: order/models.py:1015 order/models.py:2167
+#: order/models.py:1042 order/models.py:2206
msgid "Customer order reference code"
msgstr "Kundens ordrereferanse"
-#: order/models.py:1019 order/models.py:1771
-#: templates/js/translated/sales_order.js:879
-#: templates/js/translated/sales_order.js:1060
+#: order/models.py:1046 order/models.py:1800
+#: templates/js/translated/sales_order.js:838
+#: templates/js/translated/sales_order.js:1026
msgid "Shipment Date"
msgstr "Forsendelsesdato"
-#: order/models.py:1028
+#: order/models.py:1055
msgid "shipped by"
msgstr "sendt av"
-#: order/models.py:1077
+#: order/models.py:1094
msgid "Order is already complete"
msgstr ""
-#: order/models.py:1080
+#: order/models.py:1097
msgid "Order is already cancelled"
msgstr ""
-#: order/models.py:1084
+#: order/models.py:1101
msgid "Only an open order can be marked as complete"
msgstr "Kun en åpen ordre kan merkes som fullført"
-#: order/models.py:1088
+#: order/models.py:1105
msgid "Order cannot be completed as there are incomplete shipments"
msgstr "Bestillingen kan ikke fullføres da det finnes ufullstendige forsendelser"
-#: order/models.py:1093
+#: order/models.py:1110
msgid "Order cannot be completed as there are incomplete line items"
msgstr "Denne ordren kan ikke fullføres da det fortsatt er ufullstendige artikler"
-#: order/models.py:1357
+#: order/models.py:1374
msgid "Item quantity"
msgstr "Antall"
-#: order/models.py:1374
+#: order/models.py:1391
msgid "Line item reference"
msgstr "Linjereferanse"
-#: order/models.py:1381
+#: order/models.py:1398
msgid "Line item notes"
msgstr "Linjenotater"
-#: order/models.py:1393
+#: order/models.py:1410
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:1414
+#: order/models.py:1431
msgid "Line item description (optional)"
msgstr "Linjeelementbeskrivelse (valgfritt)"
-#: order/models.py:1420
-msgid "Context"
-msgstr "Kontekst"
-
-#: order/models.py:1421
+#: order/models.py:1438
msgid "Additional context for this line"
msgstr "Ytterligere kontekst for denne linjen"
-#: order/models.py:1431
+#: order/models.py:1448
msgid "Unit price"
msgstr "Enhetspris"
-#: order/models.py:1445
+#: order/models.py:1462
msgid "Purchase Order Line Item"
msgstr ""
-#: order/models.py:1469
+#: order/models.py:1486
msgid "Supplier part must match supplier"
msgstr "Delens leverandør må samsvare med leverandør"
-#: order/models.py:1476
-msgid "deleted"
-msgstr "slettet"
-
-#: order/models.py:1504
+#: order/models.py:1520
msgid "Supplier part"
msgstr "Leverandørdel"
-#: order/models.py:1511 order/templates/order/order_base.html:201
+#: order/models.py:1527 order/templates/order/order_base.html:210
#: templates/js/translated/part.js:1876 templates/js/translated/part.js:1908
-#: templates/js/translated/purchase_order.js:1369
-#: templates/js/translated/purchase_order.js:2239
+#: templates/js/translated/purchase_order.js:1352
+#: templates/js/translated/purchase_order.js:2223
#: templates/js/translated/return_order.js:762
#: templates/js/translated/table_filters.js:119
#: templates/js/translated/table_filters.js:605
msgid "Received"
msgstr "Mottatt"
-#: order/models.py:1512
+#: order/models.py:1528
msgid "Number of items received"
msgstr "Antall enheter mottatt"
-#: order/models.py:1520 stock/models.py:959 stock/serializers.py:610
-#: stock/templates/stock/item_base.html:183
-#: templates/js/translated/stock.js:2396
+#: order/models.py:1536 stock/models.py:1036 stock/serializers.py:637
+#: stock/templates/stock/item_base.html:180
+#: templates/js/translated/stock.js:2397
msgid "Purchase Price"
msgstr "Innkjøpspris"
-#: order/models.py:1521
+#: order/models.py:1537
msgid "Unit purchase price"
msgstr "Enhet-innkjøpspris"
-#: order/models.py:1536
-msgid "Where does the Purchaser want this item to be stored?"
-msgstr "Hvor vil innkjøper at artikkelen skal lagres?"
-
-#: order/models.py:1587
+#: order/models.py:1603
msgid "Purchase Order Extra Line"
msgstr ""
-#: order/models.py:1616
+#: order/models.py:1632
msgid "Sales Order Line Item"
msgstr ""
-#: order/models.py:1637
+#: order/models.py:1653
msgid "Virtual part cannot be assigned to a sales order"
msgstr "Virtuell del kan ikke tildeles salgsordre"
-#: order/models.py:1642
+#: order/models.py:1658
msgid "Only salable parts can be assigned to a sales order"
msgstr "Kun salgbare deler kan tildeles en salgsordre"
-#: order/models.py:1668 part/templates/part/part_pricing.html:107
-#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957
+#: order/models.py:1684 part/templates/part/part_pricing.html:107
+#: part/templates/part/prices.html:139 templates/js/translated/pricing.js:955
msgid "Sale Price"
msgstr "Salgspris"
-#: order/models.py:1669
+#: order/models.py:1685
msgid "Unit sale price"
msgstr "Enhets-salgspris"
-#: order/models.py:1678 order/status_codes.py:48
-#: templates/js/translated/sales_order.js:1559
-#: templates/js/translated/sales_order.js:1680
-#: templates/js/translated/sales_order.js:1993
+#: order/models.py:1694 order/status_codes.py:50
+#: templates/js/translated/sales_order.js:1525
+#: templates/js/translated/sales_order.js:1661
+#: templates/js/translated/sales_order.js:1974
msgid "Shipped"
msgstr "Sendt"
-#: order/models.py:1679
+#: order/models.py:1695
msgid "Shipped quantity"
msgstr "Sendt antall"
-#: order/models.py:1751
+#: order/models.py:1769
msgid "Sales Order Shipment"
msgstr ""
-#: order/models.py:1772
+#: order/models.py:1801
msgid "Date of shipment"
msgstr "Dato for forsendelse"
-#: order/models.py:1778 templates/js/translated/sales_order.js:1072
+#: order/models.py:1807 templates/js/translated/sales_order.js:1038
msgid "Delivery Date"
msgstr "Leveringsdato"
-#: order/models.py:1779
+#: order/models.py:1808
msgid "Date of delivery of shipment"
msgstr "Dato for levering av forsendelse"
-#: order/models.py:1787
+#: order/models.py:1816
msgid "Checked By"
msgstr "Sjekket Av"
-#: order/models.py:1788
+#: order/models.py:1817
msgid "User who checked this shipment"
msgstr "Brukeren som sjekket forsendelsen"
-#: order/models.py:1795 order/models.py:2018 order/serializers.py:1475
-#: order/serializers.py:1585 templates/js/translated/model_renderers.js:455
+#: order/models.py:1824 order/models.py:2051 order/serializers.py:1601
+#: order/serializers.py:1725
+#: report/templates/report/inventree_sales_order_shipment_report.html:14
+#: templates/js/translated/model_renderers.js:458
+#: templates/js/translated/sales_order.js:1615
msgid "Shipment"
msgstr "Forsendelse"
-#: order/models.py:1796
+#: order/models.py:1825
msgid "Shipment number"
msgstr "Forsendelsesnummer"
-#: order/models.py:1804
+#: order/models.py:1833
msgid "Tracking Number"
msgstr "Sporingsnummer"
-#: order/models.py:1805
+#: order/models.py:1834
msgid "Shipment tracking information"
msgstr "Sporingsinformasjon for forsendelse"
-#: order/models.py:1812
+#: order/models.py:1841
msgid "Invoice Number"
msgstr "Fakturanummer"
-#: order/models.py:1813
+#: order/models.py:1842
msgid "Reference number for associated invoice"
msgstr "Referansenummer for tilknyttet faktura"
-#: order/models.py:1833
+#: order/models.py:1862
msgid "Shipment has already been sent"
msgstr "Forsendelsen er allerede sendt"
-#: order/models.py:1836
+#: order/models.py:1865
msgid "Shipment has no allocated stock items"
msgstr "Forsendelsen har ingen tildelte lagervarer"
-#: order/models.py:1912
+#: order/models.py:1945
msgid "Sales Order Extra Line"
msgstr ""
-#: order/models.py:1941
+#: order/models.py:1974
msgid "Sales Order Allocation"
msgstr ""
-#: order/models.py:1964 order/models.py:1966
+#: order/models.py:1997 order/models.py:1999
msgid "Stock item has not been assigned"
msgstr "Lagervarer er ikke blitt tildelt"
-#: order/models.py:1973
+#: order/models.py:2006
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:1976
+#: order/models.py:2009
msgid "Cannot allocate stock to a line without a part"
msgstr "Kan ikke tildele lagerbeholdning til en linje uten en del"
-#: order/models.py:1979
+#: order/models.py:2012
msgid "Allocation quantity cannot exceed stock quantity"
msgstr "Tildelingsantall kan ikke overstige tilgjengelig lagerbeholdning"
-#: order/models.py:1998 order/serializers.py:1345
+#: order/models.py:2031 order/serializers.py:1471
msgid "Quantity must be 1 for serialized stock item"
msgstr "Antall må være 1 for serialisert lagervare"
-#: order/models.py:2001
+#: order/models.py:2034
msgid "Sales order does not match shipment"
msgstr "Salgsordre samsvarer ikke med forsendelse"
-#: order/models.py:2002 plugin/base/barcodes/api.py:524
+#: order/models.py:2035 plugin/base/barcodes/api.py:629
msgid "Shipment does not match sales order"
msgstr "Forsendelsen samsvarer ikke med salgsordre"
-#: order/models.py:2010
+#: order/models.py:2043
msgid "Line"
msgstr "Linje"
-#: order/models.py:2019
+#: order/models.py:2052
msgid "Sales order shipment reference"
msgstr "Forsendelsesreferanse for salgsordre"
-#: order/models.py:2032 order/models.py:2391
+#: order/models.py:2065 order/models.py:2430
#: templates/js/translated/return_order.js:720
msgid "Item"
msgstr "Artikkel"
-#: order/models.py:2033
+#: order/models.py:2066
msgid "Select stock item to allocate"
msgstr "Velg lagervare å tildele"
-#: order/models.py:2042
+#: order/models.py:2075
msgid "Enter stock allocation quantity"
msgstr "Angi lagertildelingsmengde"
-#: order/models.py:2136
+#: order/models.py:2175
msgid "Return Order reference"
msgstr "Returordre-referanse"
-#: order/models.py:2148
+#: order/models.py:2187
msgid "Company from which items are being returned"
msgstr "Firmaet delen skal returneres fra"
-#: order/models.py:2160
+#: order/models.py:2199
msgid "Return order status"
msgstr "Returordrestatus"
-#: order/models.py:2362
+#: order/models.py:2401
msgid "Return Order Line Item"
msgstr ""
-#: order/models.py:2376
+#: order/models.py:2415
msgid "Only serialized items can be assigned to a Return Order"
msgstr "Kun serialiserte artikler kan tilordnes en Returordre"
-#: order/models.py:2392
+#: order/models.py:2431
msgid "Select item to return from customer"
msgstr "Velg artikkel som skal returneres fra kunde"
-#: order/models.py:2398
+#: order/models.py:2437
msgid "Received Date"
msgstr "Mottatt Dato"
-#: order/models.py:2399
+#: order/models.py:2438
msgid "The date this this return item was received"
msgstr "Datoen denne returartikkelen ble mottatt"
-#: order/models.py:2410 templates/js/translated/return_order.js:731
+#: order/models.py:2449 templates/js/translated/return_order.js:731
#: templates/js/translated/table_filters.js:122
msgid "Outcome"
msgstr "Utfall"
-#: order/models.py:2411
+#: order/models.py:2450
msgid "Outcome for this line item"
msgstr "Utfall for dette linjeelementet"
-#: order/models.py:2418
+#: order/models.py:2457
msgid "Cost associated with return or repair for this line item"
msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet"
-#: order/models.py:2428
+#: order/models.py:2467
msgid "Return Order Extra Line"
msgstr ""
-#: order/serializers.py:86
+#: order/serializers.py:87
+msgid "Order ID"
+msgstr ""
+
+#: order/serializers.py:87
+msgid "ID of the order to duplicate"
+msgstr ""
+
+#: order/serializers.py:93
+msgid "Copy Lines"
+msgstr ""
+
+#: order/serializers.py:94
+msgid "Copy line items from the original order"
+msgstr ""
+
+#: order/serializers.py:100
+msgid "Copy Extra Lines"
+msgstr ""
+
+#: order/serializers.py:101
+msgid "Copy extra line items from the original order"
+msgstr ""
+
+#: order/serializers.py:117
msgid "Completed Lines"
msgstr ""
-#: order/serializers.py:283 stock/admin.py:195
+#: order/serializers.py:161
+msgid "Duplicate Order"
+msgstr ""
+
+#: order/serializers.py:162
+msgid "Specify options for duplicating this order"
+msgstr ""
+
+#: order/serializers.py:234
+msgid "Invalid order ID"
+msgstr ""
+
+#: order/serializers.py:374 stock/admin.py:196
msgid "Supplier Name"
msgstr "Leverandørnavn"
-#: order/serializers.py:331
+#: order/serializers.py:416
msgid "Order cannot be cancelled"
msgstr "Ordren kan ikke kanselleres"
-#: order/serializers.py:346 order/serializers.py:1366
+#: order/serializers.py:431 order/serializers.py:1492
msgid "Allow order to be closed with incomplete line items"
msgstr "Tillat ordre å lukkes med ufullstendige linjeelementer"
-#: order/serializers.py:356 order/serializers.py:1376
+#: order/serializers.py:441 order/serializers.py:1502
msgid "Order has incomplete line items"
msgstr "Ordren har ufullstendige linjeelementer"
-#: order/serializers.py:506
+#: order/serializers.py:591
msgid "Order is not open"
msgstr "Ordren er ikke åpen"
-#: order/serializers.py:527
+#: order/serializers.py:612
msgid "Auto Pricing"
msgstr ""
-#: order/serializers.py:529
+#: order/serializers.py:614
msgid "Automatically calculate purchase price based on supplier part data"
msgstr ""
-#: order/serializers.py:539
+#: order/serializers.py:624
msgid "Purchase price currency"
msgstr "Innkjøpsvaluta"
-#: order/serializers.py:545
+#: order/serializers.py:630
msgid "Merge Items"
msgstr ""
-#: order/serializers.py:547
+#: order/serializers.py:632
msgid "Merge items with the same part, destination and target date into one line item"
msgstr ""
-#: order/serializers.py:560 part/models.py:1033
+#: order/serializers.py:645 part/models.py:1094 part/serializers.py:387
msgid "Internal Part Number"
msgstr "Internt delnummer"
-#: order/serializers.py:568
+#: order/serializers.py:653
msgid "Internal Part Name"
msgstr ""
-#: order/serializers.py:584
+#: order/serializers.py:669
msgid "Supplier part must be specified"
msgstr "Leverandørdel må angis"
-#: order/serializers.py:587
+#: order/serializers.py:672
msgid "Purchase order must be specified"
msgstr "Innkjøpsordre må angis"
-#: order/serializers.py:595
+#: order/serializers.py:680
msgid "Supplier must match purchase order"
msgstr "Leverandør må samsvare med innkjøpsordre"
-#: order/serializers.py:596
+#: order/serializers.py:681
msgid "Purchase order must match supplier"
msgstr "Innkjøpsordre må samsvare med leverandør"
-#: order/serializers.py:639 order/serializers.py:1446
+#: order/serializers.py:724 order/serializers.py:1572
msgid "Line Item"
msgstr "Ordrelinje"
-#: order/serializers.py:645
+#: order/serializers.py:730
msgid "Line item does not match purchase order"
msgstr "Linjeelementet samsvarer ikke med innkjøpsordre"
-#: order/serializers.py:655 order/serializers.py:779 order/serializers.py:1782
+#: order/serializers.py:740 order/serializers.py:881 order/serializers.py:1934
msgid "Select destination location for received items"
msgstr "Velg lagerplassering for mottatte enheter"
-#: order/serializers.py:671 templates/js/translated/purchase_order.js:1130
+#: order/serializers.py:756 templates/js/translated/purchase_order.js:1113
#: templates/js/translated/stock.js:1200
msgid "Enter batch code for incoming stock items"
msgstr "Angi batchkode for innkommende lagervarer"
-#: order/serializers.py:679 templates/js/translated/purchase_order.js:1155
+#: order/serializers.py:764 templates/js/translated/purchase_order.js:1138
msgid "Enter serial numbers for incoming stock items"
msgstr "Angi serienummer for innkommende lagervarer"
-#: order/serializers.py:691
+#: order/serializers.py:776
msgid "Override packaging information for incoming stock items"
msgstr ""
-#: order/serializers.py:699
+#: order/serializers.py:784
msgid "Additional note for incoming stock items"
msgstr ""
-#: order/serializers.py:706 templates/js/translated/barcode.js:52
+#: order/serializers.py:791 templates/js/translated/barcode.js:52
msgid "Barcode"
msgstr "Strekkode"
-#: order/serializers.py:707
+#: order/serializers.py:792
msgid "Scanned barcode"
msgstr "Skannet strekkode"
-#: order/serializers.py:723
+#: order/serializers.py:808
msgid "Barcode is already in use"
msgstr "Strekkode allerede i bruk"
-#: order/serializers.py:747
+#: order/serializers.py:831
msgid "An integer quantity must be provided for trackable parts"
msgstr "Heltallsverdi må angis for sporbare deler"
-#: order/serializers.py:795 order/serializers.py:1798
+#: order/serializers.py:898 order/serializers.py:1950
msgid "Line items must be provided"
msgstr "Linjeelementer må være oppgitt"
-#: order/serializers.py:811
+#: order/serializers.py:914
msgid "Destination location must be specified"
msgstr "Målplassering må angis"
-#: order/serializers.py:822
+#: order/serializers.py:925
msgid "Supplied barcode values must be unique"
msgstr "Angitte strekkodeverdier må være unike"
-#: order/serializers.py:1187
+#: order/serializers.py:1221
msgid "Sale price currency"
msgstr "Valuta for salgspris"
-#: order/serializers.py:1248
+#: order/serializers.py:1260
+msgid "Allocated Items"
+msgstr ""
+
+#: order/serializers.py:1374
msgid "No shipment details provided"
msgstr "Ingen forsendelsesopplysninger oppgitt"
-#: order/serializers.py:1309 order/serializers.py:1455
+#: order/serializers.py:1435 order/serializers.py:1581
msgid "Line item is not associated with this order"
msgstr "Linjeelement er ikke knyttet til denne ordren"
-#: order/serializers.py:1328
+#: order/serializers.py:1454
msgid "Quantity must be positive"
msgstr "Mengden må være positiv"
-#: order/serializers.py:1465
+#: order/serializers.py:1591
msgid "Enter serial numbers to allocate"
msgstr "Skriv inn serienummer for å tildele"
-#: order/serializers.py:1487 order/serializers.py:1593
+#: order/serializers.py:1613 order/serializers.py:1733
msgid "Shipment has already been shipped"
msgstr "Forsendelsen er allerede sendt"
-#: order/serializers.py:1490 order/serializers.py:1596
+#: order/serializers.py:1616 order/serializers.py:1736
msgid "Shipment is not associated with this order"
msgstr "Forsendelsen er ikke knyttet til denne ordren"
-#: order/serializers.py:1537
+#: order/serializers.py:1671
msgid "No match found for the following serial numbers"
msgstr "Ingen treff funnet for følgende serienummer"
-#: order/serializers.py:1544
-msgid "The following serial numbers are already allocated"
-msgstr "Følgende serienummer er allerede tildelt"
+#: order/serializers.py:1678
+msgid "The following serial numbers are unavailable"
+msgstr ""
-#: order/serializers.py:1752
+#: order/serializers.py:1904
msgid "Return order line item"
msgstr "Returordrelinje"
-#: order/serializers.py:1758
+#: order/serializers.py:1910
msgid "Line item does not match return order"
msgstr "Linjeelementet samsvarer ikke med returordre"
-#: order/serializers.py:1761
+#: order/serializers.py:1913
msgid "Line item has already been received"
msgstr "Linjeelementet er allerede mottatt"
-#: order/serializers.py:1790
+#: order/serializers.py:1942
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:1873
+#: order/serializers.py:2025
msgid "Line price currency"
msgstr "Valuta for linje"
-#: order/status_codes.py:17 order/status_codes.py:52 stock/status_codes.py:16
+#: order/status_codes.py:17 order/status_codes.py:54 stock/status_codes.py:16
msgid "Lost"
msgstr "Tapt"
-#: order/status_codes.py:18 order/status_codes.py:53 stock/status_codes.py:22
+#: order/status_codes.py:18 order/status_codes.py:55 stock/status_codes.py:24
msgid "Returned"
msgstr "Returnert"
-#: order/status_codes.py:45 order/status_codes.py:77
+#: order/status_codes.py:47 order/status_codes.py:79
msgid "In Progress"
msgstr "Pågående"
-#: order/status_codes.py:101
+#: order/status_codes.py:105
msgid "Return"
msgstr "Retur"
-#: order/status_codes.py:104
+#: order/status_codes.py:108
msgid "Repair"
msgstr "Reparasjon"
-#: order/status_codes.py:107
+#: order/status_codes.py:111
msgid "Replace"
msgstr "Erstatt"
-#: order/status_codes.py:110
+#: order/status_codes.py:114
msgid "Refund"
msgstr "Refusjon"
-#: order/status_codes.py:113
+#: order/status_codes.py:117
msgid "Reject"
msgstr "Avvis"
-#: order/tasks.py:25
+#: order/tasks.py:30
msgid "Overdue Purchase Order"
msgstr "Forfalt Innkjøpsordre"
-#: order/tasks.py:30
+#: order/tasks.py:35
#, python-brace-format
msgid "Purchase order {po} is now overdue"
msgstr "Innkjøpsordre {po} er nå forfalt"
-#: order/tasks.py:75
+#: order/tasks.py:80
msgid "Overdue Sales Order"
msgstr "Forfalt Salgsordre"
-#: order/tasks.py:80
+#: order/tasks.py:85
#, python-brace-format
msgid "Sales order {so} is now overdue"
msgstr "Salgsordre {so} er nå forfalt"
-#: order/templates/order/order_base.html:51
+#: order/templates/order/order_base.html:52
msgid "Print purchase order report"
msgstr "Skriv ut innkjøpsordrerapport"
-#: order/templates/order/order_base.html:53
-#: order/templates/order/return_order_base.html:62
-#: order/templates/order/sales_order_base.html:62
+#: order/templates/order/order_base.html:54
+#: order/templates/order/return_order_base.html:63
+#: order/templates/order/sales_order_base.html:63
msgid "Export order to file"
msgstr "Eksporterer ordre til fil"
-#: order/templates/order/order_base.html:59
-#: order/templates/order/return_order_base.html:72
-#: order/templates/order/sales_order_base.html:71
+#: order/templates/order/order_base.html:60
+#: order/templates/order/return_order_base.html:73
+#: order/templates/order/sales_order_base.html:72
msgid "Order actions"
msgstr "Ordrehandlinger"
-#: order/templates/order/order_base.html:64
-#: order/templates/order/return_order_base.html:76
-#: order/templates/order/sales_order_base.html:75
+#: order/templates/order/order_base.html:65
+#: order/templates/order/return_order_base.html:77
+#: order/templates/order/sales_order_base.html:76
msgid "Edit order"
msgstr "Rediger ordre"
-#: order/templates/order/order_base.html:68
+#: order/templates/order/order_base.html:69
msgid "Duplicate order"
msgstr "Dupliser ordre"
-#: order/templates/order/order_base.html:73
-#: order/templates/order/return_order_base.html:78
-#: order/templates/order/sales_order_base.html:77
+#: order/templates/order/order_base.html:74
+#: order/templates/order/return_order_base.html:79
+#: order/templates/order/sales_order_base.html:78
msgid "Hold order"
msgstr ""
-#: order/templates/order/order_base.html:78
-#: order/templates/order/return_order_base.html:81
-#: order/templates/order/sales_order_base.html:80
+#: order/templates/order/order_base.html:79
+#: order/templates/order/return_order_base.html:82
+#: order/templates/order/sales_order_base.html:81
msgid "Cancel order"
msgstr "Kanseller ordre"
-#: order/templates/order/order_base.html:84
#: order/templates/order/order_base.html:85
-#: order/templates/order/return_order_base.html:85
+#: order/templates/order/order_base.html:86
#: order/templates/order/return_order_base.html:86
-#: order/templates/order/sales_order_base.html:86
+#: order/templates/order/return_order_base.html:87
#: order/templates/order/sales_order_base.html:87
+#: order/templates/order/sales_order_base.html:88
msgid "Issue Order"
msgstr "Send ordre"
-#: order/templates/order/order_base.html:88
-#: order/templates/order/return_order_base.html:89
+#: order/templates/order/order_base.html:89
+#: order/templates/order/return_order_base.html:90
msgid "Mark order as complete"
msgstr "Merk ordren som fullført"
-#: order/templates/order/order_base.html:89
-#: order/templates/order/return_order_base.html:90
-#: order/templates/order/sales_order_base.html:100
+#: order/templates/order/order_base.html:90
+#: order/templates/order/return_order_base.html:91
+#: order/templates/order/sales_order_base.html:101
msgid "Complete Order"
msgstr "Fullfør ordre"
-#: order/templates/order/order_base.html:96
+#: order/templates/order/order_base.html:97
msgid "Supplier part thumbnail"
msgstr "Miniatyrbilde for leverandør"
-#: order/templates/order/order_base.html:116
-#: order/templates/order/return_order_base.html:109
-#: order/templates/order/sales_order_base.html:118
+#: order/templates/order/order_base.html:117
+#: order/templates/order/return_order_base.html:110
+#: order/templates/order/sales_order_base.html:119
msgid "Order Description"
msgstr "Ordrebeskrivelse"
-#: order/templates/order/order_base.html:146
-msgid "No suppplier information available"
-msgstr "Ingen leverandørinformasjon tilgjengelig"
-
-#: order/templates/order/order_base.html:159
-#: order/templates/order/sales_order_base.html:164
+#: order/templates/order/order_base.html:168
+#: order/templates/order/sales_order_base.html:165
msgid "Completed Line Items"
msgstr "Fullførte elementer"
-#: order/templates/order/order_base.html:165
-#: order/templates/order/sales_order_base.html:170
-#: order/templates/order/sales_order_base.html:180
+#: order/templates/order/order_base.html:174
+#: order/templates/order/sales_order_base.html:171
+#: order/templates/order/sales_order_base.html:181
msgid "Incomplete"
msgstr "Ufullstendig"
-#: order/templates/order/order_base.html:184
-#: order/templates/order/return_order_base.html:160
+#: order/templates/order/order_base.html:193
+#: order/templates/order/return_order_base.html:161
#: report/templates/report/inventree_build_order_report.html:121
msgid "Issued"
msgstr "Utstedt"
-#: order/templates/order/order_base.html:229
+#: order/templates/order/order_base.html:238
msgid "Total cost"
msgstr "Total kostnad"
-#: order/templates/order/order_base.html:233
-#: order/templates/order/return_order_base.html:202
-#: order/templates/order/sales_order_base.html:246
+#: order/templates/order/order_base.html:242
+#: order/templates/order/return_order_base.html:203
+#: order/templates/order/sales_order_base.html:247
msgid "Total cost could not be calculated"
msgstr "Total kostnad kunne ikke beregnes"
-#: order/templates/order/order_base.html:335
+#: order/templates/order/order_base.html:344
msgid "Purchase Order QR Code"
msgstr ""
-#: order/templates/order/order_base.html:347
+#: order/templates/order/order_base.html:356
msgid "Link Barcode to Purchase Order"
msgstr ""
@@ -6184,12 +6392,12 @@ msgstr "Duplikatvalg"
#: part/templates/part/import_wizard/ajax_match_references.html:42
#: part/templates/part/import_wizard/match_fields.html:71
#: part/templates/part/import_wizard/match_references.html:49
-#: templates/js/translated/bom.js:133 templates/js/translated/build.js:530
-#: templates/js/translated/build.js:1802
-#: templates/js/translated/purchase_order.js:696
-#: templates/js/translated/purchase_order.js:1288
+#: templates/js/translated/bom.js:133 templates/js/translated/build.js:533
+#: templates/js/translated/build.js:1805
+#: templates/js/translated/purchase_order.js:679
+#: templates/js/translated/purchase_order.js:1271
#: templates/js/translated/return_order.js:505
-#: templates/js/translated/sales_order.js:1145
+#: templates/js/translated/sales_order.js:1111
#: templates/js/translated/stock.js:720 templates/js/translated/stock.js:889
#: templates/patterns/wizard/match_fields.html:70
msgid "Remove row"
@@ -6242,7 +6450,7 @@ 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:414
+#: templates/js/translated/purchase_order.js:397
#: templates/js/translated/return_order.js:458
#: templates/js/translated/sales_order.js:237
msgid "Add Line Item"
@@ -6277,45 +6485,45 @@ msgstr "Mottatte artikler"
msgid "Order Notes"
msgstr "Ordrenotater"
-#: order/templates/order/return_order_base.html:18
-#: order/templates/order/sales_order_base.html:18
+#: order/templates/order/return_order_base.html:19
+#: order/templates/order/sales_order_base.html:19
msgid "Customer logo thumbnail"
msgstr "Miniatyrbilde for kundelogo"
-#: order/templates/order/return_order_base.html:60
+#: order/templates/order/return_order_base.html:61
msgid "Print return order report"
msgstr "Skriv ut returordrerapport"
-#: order/templates/order/return_order_base.html:64
-#: order/templates/order/sales_order_base.html:64
+#: order/templates/order/return_order_base.html:65
+#: order/templates/order/sales_order_base.html:65
msgid "Print packing list"
msgstr "Skriv ut pakkeliste"
-#: order/templates/order/return_order_base.html:141
-#: order/templates/order/sales_order_base.html:158
+#: order/templates/order/return_order_base.html:142
+#: order/templates/order/sales_order_base.html:159
#: templates/js/translated/return_order.js:308
-#: templates/js/translated/sales_order.js:833
+#: templates/js/translated/sales_order.js:792
msgid "Customer Reference"
msgstr "Kundereferanse"
-#: order/templates/order/return_order_base.html:198
-#: order/templates/order/sales_order_base.html:242
+#: order/templates/order/return_order_base.html:199
+#: order/templates/order/sales_order_base.html:243
#: 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:1079
-#: templates/js/translated/purchase_order.js:1822
+#: templates/js/translated/purchase_order.js:1806
#: templates/js/translated/return_order.js:380
-#: templates/js/translated/sales_order.js:891
+#: templates/js/translated/sales_order.js:850
msgid "Total Cost"
msgstr "Total kostnad"
-#: order/templates/order/return_order_base.html:273
+#: order/templates/order/return_order_base.html:274
msgid "Return Order QR Code"
msgstr ""
-#: order/templates/order/return_order_base.html:285
+#: order/templates/order/return_order_base.html:286
msgid "Link Barcode to Return Order"
msgstr ""
@@ -6323,40 +6531,40 @@ msgstr ""
msgid "Order Details"
msgstr "Ordredetaljer"
-#: order/templates/order/sales_order_base.html:60
+#: order/templates/order/sales_order_base.html:61
msgid "Print sales order report"
msgstr "Skriv ut salgsordrerapport"
-#: order/templates/order/sales_order_base.html:91
#: order/templates/order/sales_order_base.html:92
+#: order/templates/order/sales_order_base.html:93
msgid "Ship Items"
msgstr "Send artikler"
-#: order/templates/order/sales_order_base.html:95
#: order/templates/order/sales_order_base.html:96
+#: order/templates/order/sales_order_base.html:97
msgid "Mark As Shipped"
msgstr ""
-#: order/templates/order/sales_order_base.html:99
-#: templates/js/translated/sales_order.js:536
+#: order/templates/order/sales_order_base.html:100
+#: templates/js/translated/sales_order.js:495
msgid "Complete Sales Order"
msgstr "Fullfør Salgsordre"
-#: order/templates/order/sales_order_base.html:138
+#: order/templates/order/sales_order_base.html:139
msgid "This Sales Order has not been fully allocated"
msgstr "Salgsordren er ikke fullstendig tildelt"
-#: order/templates/order/sales_order_base.html:176
+#: order/templates/order/sales_order_base.html:177
#: 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:339
+#: order/templates/order/sales_order_base.html:340
msgid "Sales Order QR Code"
msgstr ""
-#: order/templates/order/sales_order_base.html:351
+#: order/templates/order/sales_order_base.html:352
msgid "Link Barcode to Sales Order"
msgstr ""
@@ -6370,7 +6578,7 @@ msgid "Pending Shipments"
msgstr "Ventende forsendelser"
#: order/templates/order/sales_order_detail.html:71
-#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1063
+#: templates/js/translated/bom.js:1277 templates/js/translated/build.js:1066
#: templates/js/translated/filters.js:299
msgid "Actions"
msgstr "Handlinger"
@@ -6383,39 +6591,40 @@ msgstr "Ny forsendelse"
msgid "Match Supplier Parts"
msgstr "Match Leverandørdeler"
-#: order/views.py:406
+#: order/views.py:407
msgid "Sales order not found"
msgstr "Salgsordre ikke funnet"
-#: order/views.py:412
+#: order/views.py:413
msgid "Price not found"
msgstr "Pris ikke funnet"
-#: order/views.py:415
+#: order/views.py:416
#, python-brace-format
msgid "Updated {part} unit-price to {price}"
msgstr "Oppdaterte {part} enhetspris to {price}"
-#: order/views.py:421
+#: order/views.py:422
#, 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:48 part/models.py:1032 part/templates/part/part_base.html:269
+#: part/admin.py:48 part/models.py:1093 part/serializers.py:939
+#: part/templates/part/part_base.html:277
#: report/templates/report/inventree_stock_location_report.html:103
#: templates/js/translated/part.js:1233 templates/js/translated/part.js:2347
-#: templates/js/translated/stock.js:2121
+#: templates/js/translated/stock.js:2122
msgid "IPN"
msgstr ""
-#: part/admin.py:50 part/models.py:1041 part/templates/part/part_base.html:286
+#: part/admin.py:50 part/models.py:1102 part/templates/part/part_base.html:294
#: report/models.py:161 templates/js/translated/part.js:1238
#: templates/js/translated/part.js:2353
msgid "Revision"
msgstr "Revisjon"
-#: part/admin.py:53 part/admin.py:319 part/models.py:1014
-#: part/templates/part/category.html:91 part/templates/part/part_base.html:307
+#: part/admin.py:53 part/admin.py:319 part/models.py:1075
+#: part/templates/part/category.html:91 part/templates/part/part_base.html:315
msgid "Keywords"
msgstr "Nøkkelord"
@@ -6427,7 +6636,7 @@ msgstr "Del-bilde"
msgid "Category ID"
msgstr "Kategori-ID"
-#: part/admin.py:67 part/admin.py:304 part/serializers.py:880
+#: part/admin.py:67 part/admin.py:304 part/serializers.py:924
#: part/stocktake.py:222
msgid "Category Name"
msgstr "Kategorinavn"
@@ -6440,11 +6649,11 @@ msgstr "Standard plasserings-ID"
msgid "Default Supplier ID"
msgstr "Standard leverandør-ID"
-#: part/admin.py:81 part/models.py:1000 part/templates/part/part_base.html:177
+#: part/admin.py:81 part/models.py:1061 part/templates/part/part_base.html:178
msgid "Variant Of"
msgstr "Variant av"
-#: part/admin.py:84 part/models.py:1138 part/templates/part/part_base.html:203
+#: part/admin.py:84 part/models.py:1199 part/templates/part/part_base.html:204
msgid "Minimum Stock"
msgstr "Minimal lagerbeholdning"
@@ -6452,23 +6661,23 @@ msgstr "Minimal lagerbeholdning"
msgid "Used In"
msgstr "Brukt i"
-#: part/admin.py:150 part/serializers.py:897
-#: part/templates/part/part_base.html:241 stock/admin.py:235
+#: part/admin.py:150 part/serializers.py:949
+#: part/templates/part/part_base.html:249 stock/admin.py:236
#: templates/js/translated/part.js:717 templates/js/translated/part.js:2159
msgid "Building"
msgstr "Produseres"
-#: part/admin.py:155 part/models.py:3202 part/models.py:3216
+#: part/admin.py:155 part/models.py:3253 part/models.py:3267
#: templates/js/translated/part.js:976
msgid "Minimum Cost"
msgstr "Minimal kostnad"
-#: part/admin.py:158 part/models.py:3209 part/models.py:3223
+#: part/admin.py:158 part/models.py:3260 part/models.py:3274
#: templates/js/translated/part.js:986
msgid "Maximum Cost"
msgstr "Maksimal kostnad"
-#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:215
+#: part/admin.py:308 part/admin.py:387 stock/admin.py:57 stock/admin.py:216
msgid "Parent ID"
msgstr "Overordnet ID"
@@ -6481,8 +6690,8 @@ msgstr "Overordnet navn"
msgid "Category Path"
msgstr "Sti til kategori"
-#: part/admin.py:325 part/models.py:425 part/serializers.py:130
-#: part/serializers.py:290 part/serializers.py:415
+#: part/admin.py:325 part/models.py:420 part/serializers.py:130
+#: part/serializers.py:323 part/serializers.py:459
#: part/templates/part/cat_link.html:3 part/templates/part/category.html:20
#: part/templates/part/category.html:138 part/templates/part/category.html:158
#: part/templates/part/category_sidebar.html:9
@@ -6509,15 +6718,15 @@ msgstr "Overodnet IPN"
msgid "Part Revision"
msgstr ""
-#: part/admin.py:418 part/serializers.py:1346
+#: part/admin.py:418 part/serializers.py:1400
#: templates/js/translated/pricing.js:358
-#: templates/js/translated/pricing.js:1024
+#: templates/js/translated/pricing.js:1022
msgid "Minimum Price"
msgstr "Minstepris"
-#: part/admin.py:423 part/serializers.py:1361
+#: part/admin.py:423 part/serializers.py:1415
#: templates/js/translated/pricing.js:353
-#: templates/js/translated/pricing.js:1032
+#: templates/js/translated/pricing.js:1030
msgid "Maximum Price"
msgstr "Makspris"
@@ -6545,94 +6754,98 @@ msgstr ""
msgid "Filter by top-level categories"
msgstr ""
+#: part/api.py:156 stock/api.py:343
+msgid "Cascade"
+msgstr ""
+
#: part/api.py:158
msgid "Include sub-categories in filtered results"
msgstr ""
-#: part/api.py:179 templates/js/translated/part.js:311
+#: part/api.py:178 templates/js/translated/part.js:311
msgid "Parent"
msgstr ""
-#: part/api.py:181
+#: part/api.py:180
msgid "Filter by parent category"
msgstr ""
-#: part/api.py:214
+#: part/api.py:213
msgid "Exclude Tree"
msgstr ""
-#: part/api.py:216
+#: part/api.py:215
msgid "Exclude sub-categories under the specified category"
msgstr ""
-#: part/api.py:441
+#: part/api.py:440
msgid "Has Results"
msgstr ""
-#: part/api.py:608
+#: part/api.py:604
msgid "Incoming Purchase Order"
msgstr "Innkommende innkjøpsordre"
-#: part/api.py:626
+#: part/api.py:618
msgid "Outgoing Sales Order"
msgstr "Utgående salgsordre"
-#: part/api.py:642
+#: part/api.py:630
msgid "Stock produced by Build Order"
msgstr "Lagervarer produsert av en produksjonsordre"
-#: part/api.py:726
+#: part/api.py:712
msgid "Stock required for Build Order"
msgstr "Lagervarer påkrevd for produksjonsordre"
-#: part/api.py:874
+#: part/api.py:858
msgid "Validate entire Bill of Materials"
msgstr "Godkjenn hele Stykklisten"
-#: part/api.py:880
+#: part/api.py:864
msgid "This option must be selected"
msgstr "Dette alternativet må være valgt"
-#: part/api.py:916
+#: part/api.py:900
msgid "Is Revision"
msgstr ""
-#: part/api.py:926
+#: part/api.py:910
msgid "Has Revisions"
msgstr ""
-#: part/api.py:1117
+#: part/api.py:1101
msgid "BOM Valid"
msgstr ""
-#: part/api.py:1523 part/models.py:1024 part/models.py:3489 part/models.py:4046
-#: part/serializers.py:430 part/serializers.py:1202
-#: part/templates/part/part_base.html:260 stock/api.py:781
+#: part/api.py:1509 part/models.py:1085 part/models.py:3540 part/models.py:4104
+#: part/serializers.py:474 part/serializers.py:1255
+#: part/templates/part/part_base.html:268 stock/api.py:781
#: templates/InvenTree/settings/settings_staff_js.html:300
#: templates/js/translated/notification.js:60
#: templates/js/translated/part.js:2383
msgid "Category"
msgstr "Kategori"
-#: part/api.py:1761
+#: part/api.py:1750
msgid "Assembly part is testable"
msgstr ""
-#: part/api.py:1770
+#: part/api.py:1759
msgid "Component part is testable"
msgstr ""
-#: part/api.py:1821
+#: part/api.py:1810
msgid "Uses"
msgstr ""
-#: part/bom.py:178 part/models.py:107 part/models.py:1077
-#: part/templates/part/category.html:113 part/templates/part/part_base.html:376
+#: part/bom.py:183 part/models.py:109 part/models.py:1138
+#: part/templates/part/category.html:113 part/templates/part/part_base.html:384
#: templates/js/translated/part.js:2397
msgid "Default Location"
msgstr "Standard plassering"
-#: part/bom.py:179 part/serializers.py:905
+#: part/bom.py:184 part/serializers.py:957
#: templates/email/low_stock_notification.html:16
msgid "Total Stock"
msgstr "Total lagerbeholdning"
@@ -6641,789 +6854,789 @@ msgstr "Total lagerbeholdning"
msgid "Input quantity for price calculation"
msgstr "Sett inn antall for prisberegning"
-#: part/models.py:88 part/models.py:4047 part/templates/part/category.html:16
+#: part/models.py:90 part/models.py:4105 part/templates/part/category.html:16
#: part/templates/part/part_app_base.html:10
msgid "Part Category"
msgstr "Delkategori"
-#: part/models.py:89 part/templates/part/category.html:133
+#: part/models.py:91 part/templates/part/category.html:133
#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158
#: users/models.py:202
msgid "Part Categories"
msgstr "Delkategorier"
-#: part/models.py:108
+#: part/models.py:110
msgid "Default location for parts in this category"
msgstr "Standardplassering for deler i denne kategorien"
-#: part/models.py:113 stock/models.py:187 templates/js/translated/part.js:2828
-#: templates/js/translated/stock.js:2856
+#: part/models.py:115 stock/models.py:193 templates/js/translated/part.js:2828
+#: templates/js/translated/stock.js:2857
#: templates/js/translated/table_filters.js:246
#: templates/js/translated/table_filters.js:290
msgid "Structural"
msgstr "Strukturell"
-#: part/models.py:115
+#: part/models.py:117
msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories."
msgstr "Deler kan ikke tilordnes direkte til en strukturell kategori, men kan tilordnes til underkategorier."
-#: part/models.py:124
+#: part/models.py:126
msgid "Default keywords"
msgstr "Standard nøkkelord"
-#: part/models.py:125
+#: part/models.py:127
msgid "Default keywords for parts in this category"
msgstr "Standard nøkkelord for deler i denne kategorien"
-#: part/models.py:131 stock/models.py:90 stock/models.py:169
+#: part/models.py:133 stock/models.py:96 stock/models.py:175
#: templates/InvenTree/settings/settings_staff_js.html:445
msgid "Icon"
msgstr "Ikon"
-#: part/models.py:132 part/serializers.py:143 part/serializers.py:161
-#: stock/models.py:170
+#: part/models.py:134 part/serializers.py:143 part/serializers.py:161
+#: stock/models.py:176
msgid "Icon (optional)"
msgstr "Ikon (valgfritt)"
-#: part/models.py:178
+#: part/models.py:180
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:519
+#: part/models.py:514
msgid "Cannot delete this part as it is locked"
msgstr ""
-#: part/models.py:522
+#: part/models.py:517
msgid "Cannot delete this part as it is still active"
msgstr ""
-#: part/models.py:527
+#: part/models.py:522
msgid "Cannot delete this part as it is used in an assembly"
msgstr ""
-#: part/models.py:565
+#: part/models.py:560
msgid "Invalid choice for parent part"
msgstr "Ugyldig valg for overordnet del"
-#: part/models.py:613 part/models.py:620
+#: part/models.py:608 part/models.py:615
#, python-brace-format
msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)"
msgstr "Delen '{self}' kan ikke brukes i BOM for '{parent}' (rekursiv)"
-#: part/models.py:632
+#: part/models.py:627
#, python-brace-format
msgid "Part '{parent}' is used in BOM for '{self}' (recursive)"
msgstr "Delen '{parent}' er brukt i BOM for '{self}' (rekursiv)"
-#: part/models.py:695
+#: part/models.py:694
#, python-brace-format
msgid "IPN must match regex pattern {pattern}"
msgstr "IPN må samsvare med regex-mønsteret {pattern}"
-#: part/models.py:703
+#: part/models.py:702
msgid "Part cannot be a revision of itself"
msgstr ""
-#: part/models.py:710
+#: part/models.py:709
msgid "Cannot make a revision of a part which is already a revision"
msgstr ""
-#: part/models.py:717
+#: part/models.py:716
msgid "Revision code must be specified"
msgstr ""
-#: part/models.py:724
+#: part/models.py:723
msgid "Revisions are only allowed for assembly parts"
msgstr ""
-#: part/models.py:731
+#: part/models.py:730
msgid "Cannot make a revision of a template part"
msgstr ""
-#: part/models.py:737
+#: part/models.py:736
msgid "Parent part must point to the same template"
msgstr ""
-#: part/models.py:816
+#: part/models.py:832
msgid "Stock item with this serial number already exists"
msgstr "Lagervare med dette serienummeret eksisterer allerede"
-#: part/models.py:917
+#: part/models.py:976
msgid "Duplicate IPN not allowed in part settings"
msgstr "Duplikat av internt delnummer er ikke tillatt i delinnstillinger"
-#: part/models.py:926
+#: part/models.py:988
msgid "Duplicate part revision already exists."
msgstr ""
-#: part/models.py:936
+#: part/models.py:997
msgid "Part with this Name, IPN and Revision already exists."
msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede."
-#: part/models.py:951
+#: part/models.py:1012
msgid "Parts cannot be assigned to structural part categories!"
msgstr "Deler kan ikke tilordnes strukturelle delkategorier!"
-#: part/models.py:983 part/models.py:4102
+#: part/models.py:1044 part/models.py:4160
msgid "Part name"
msgstr "Delnavn"
-#: part/models.py:988
+#: part/models.py:1049
msgid "Is Template"
msgstr "Er Mal"
-#: part/models.py:989
+#: part/models.py:1050
msgid "Is this part a template part?"
msgstr "Er delen en maldel?"
-#: part/models.py:999
+#: part/models.py:1060
msgid "Is this part a variant of another part?"
msgstr "Er delen en variant av en annen del?"
-#: part/models.py:1007
+#: part/models.py:1068
msgid "Part description (optional)"
msgstr "Delbeskrivelse (valgfritt)"
-#: part/models.py:1015
+#: part/models.py:1076
msgid "Part keywords to improve visibility in search results"
msgstr "Del-nøkkelord for å øke synligheten i søkeresultater"
-#: part/models.py:1025
+#: part/models.py:1086
msgid "Part category"
msgstr "Delkategori"
-#: part/models.py:1040
+#: part/models.py:1101
msgid "Part revision or version number"
msgstr "Delrevisjon eller versjonsnummer"
-#: part/models.py:1050
+#: part/models.py:1111
msgid "Is this part a revision of another part?"
msgstr ""
-#: part/models.py:1051 part/templates/part/part_base.html:277
+#: part/models.py:1112 part/templates/part/part_base.html:285
msgid "Revision Of"
msgstr ""
-#: part/models.py:1075
+#: part/models.py:1136
msgid "Where is this item normally stored?"
msgstr "Hvor er denne artikkelen vanligvis lagret?"
-#: part/models.py:1121 part/templates/part/part_base.html:385
+#: part/models.py:1182 part/templates/part/part_base.html:393
msgid "Default Supplier"
msgstr "Standard leverandør"
-#: part/models.py:1122
+#: part/models.py:1183
msgid "Default supplier part"
msgstr "Standard leverandørdel"
-#: part/models.py:1129
+#: part/models.py:1190
msgid "Default Expiry"
msgstr "Standard utløp"
-#: part/models.py:1130
+#: part/models.py:1191
msgid "Expiry time (in days) for stock items of this part"
msgstr "Utløpstid (i dager) for lagervarer av denne delen"
-#: part/models.py:1139
+#: part/models.py:1200
msgid "Minimum allowed stock level"
msgstr "Minimum tillatt lagernivå"
-#: part/models.py:1148
+#: part/models.py:1209
msgid "Units of measure for this part"
msgstr "Måleenheter for denne delen"
-#: part/models.py:1155
+#: part/models.py:1216
msgid "Can this part be built from other parts?"
msgstr "Kan denne delen bygges fra andre deler?"
-#: part/models.py:1161
+#: part/models.py:1222
msgid "Can this part be used to build other parts?"
msgstr "Kan denne delen brukes til å bygge andre deler?"
-#: part/models.py:1167
+#: part/models.py:1228
msgid "Does this part have tracking for unique items?"
msgstr "Har denne delen sporing av unike artikler?"
-#: part/models.py:1173
+#: part/models.py:1234
msgid "Can this part have test results recorded against it?"
msgstr ""
-#: part/models.py:1179
+#: part/models.py:1240
msgid "Can this part be purchased from external suppliers?"
msgstr "Kan denne delen kjøpes inn fra eksterne leverandører?"
-#: part/models.py:1185
+#: part/models.py:1246
msgid "Can this part be sold to customers?"
msgstr "Kan denne delen selges til kunder?"
-#: part/models.py:1189
+#: part/models.py:1250
msgid "Is this part active?"
msgstr "Er denne delen aktiv?"
-#: part/models.py:1194 templates/js/translated/part.js:821
+#: part/models.py:1255 templates/js/translated/part.js:821
#: templates/js/translated/table_filters.js:724
msgid "Locked"
msgstr ""
-#: part/models.py:1195
+#: part/models.py:1256
msgid "Locked parts cannot be edited"
msgstr ""
-#: part/models.py:1201
+#: part/models.py:1262
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:1207
+#: part/models.py:1268
msgid "BOM checksum"
msgstr "Kontrollsum for BOM"
-#: part/models.py:1208
+#: part/models.py:1269
msgid "Stored BOM checksum"
msgstr "Lagret BOM-kontrollsum"
-#: part/models.py:1216
+#: part/models.py:1277
msgid "BOM checked by"
msgstr "Stykkliste sjekket av"
-#: part/models.py:1221
+#: part/models.py:1282
msgid "BOM checked date"
msgstr "Stykkliste sjekket dato"
-#: part/models.py:1237
+#: part/models.py:1298
msgid "Creation User"
msgstr "Opprettingsbruker"
-#: part/models.py:1247
+#: part/models.py:1308
msgid "Owner responsible for this part"
msgstr "Eier ansvarlig for denne delen"
-#: part/models.py:1252 part/templates/part/part_base.html:348
-#: stock/templates/stock/item_base.html:451
+#: part/models.py:1313 part/templates/part/part_base.html:356
+#: stock/templates/stock/item_base.html:448
#: templates/js/translated/part.js:2490
msgid "Last Stocktake"
msgstr "Siste lagertelling"
-#: part/models.py:2125
+#: part/models.py:2185
msgid "Sell multiple"
msgstr "Selg flere"
-#: part/models.py:3116
+#: part/models.py:3167
msgid "Currency used to cache pricing calculations"
msgstr "Valuta som brukes til å bufre prisberegninger"
-#: part/models.py:3132
+#: part/models.py:3183
msgid "Minimum BOM Cost"
msgstr "Minimal BOM-kostnad"
-#: part/models.py:3133
+#: part/models.py:3184
msgid "Minimum cost of component parts"
msgstr "Minste kostnad for komponentdeler"
-#: part/models.py:3139
+#: part/models.py:3190
msgid "Maximum BOM Cost"
msgstr "Maksimal BOM-kostnad"
-#: part/models.py:3140
+#: part/models.py:3191
msgid "Maximum cost of component parts"
msgstr "Maksimal kostnad for komponentdeler"
-#: part/models.py:3146
+#: part/models.py:3197
msgid "Minimum Purchase Cost"
msgstr "Minimal innkjøpskostnad"
-#: part/models.py:3147
+#: part/models.py:3198
msgid "Minimum historical purchase cost"
msgstr "Minimal historisk innkjøpskostnad"
-#: part/models.py:3153
+#: part/models.py:3204
msgid "Maximum Purchase Cost"
msgstr "Maksimal innkjøpskostnad"
-#: part/models.py:3154
+#: part/models.py:3205
msgid "Maximum historical purchase cost"
msgstr "Maksimal historisk innkjøpskostnad"
-#: part/models.py:3160
+#: part/models.py:3211
msgid "Minimum Internal Price"
msgstr "Minimal intern pris"
-#: part/models.py:3161
+#: part/models.py:3212
msgid "Minimum cost based on internal price breaks"
msgstr "Minimal kostnad basert på interne prisbrudd"
-#: part/models.py:3167
+#: part/models.py:3218
msgid "Maximum Internal Price"
msgstr "Maksimal intern pris"
-#: part/models.py:3168
+#: part/models.py:3219
msgid "Maximum cost based on internal price breaks"
msgstr "Maksimal kostnad basert på interne prisbrudd"
-#: part/models.py:3174
+#: part/models.py:3225
msgid "Minimum Supplier Price"
msgstr "Minimal leverandørpris"
-#: part/models.py:3175
+#: part/models.py:3226
msgid "Minimum price of part from external suppliers"
msgstr "Minimumspris for del fra eksterne leverandører"
-#: part/models.py:3181
+#: part/models.py:3232
msgid "Maximum Supplier Price"
msgstr "Maksimal leverandørpris"
-#: part/models.py:3182
+#: part/models.py:3233
msgid "Maximum price of part from external suppliers"
msgstr "Maksimalpris for del fra eksterne leverandører"
-#: part/models.py:3188
+#: part/models.py:3239
msgid "Minimum Variant Cost"
msgstr "Minimal Variantkostnad"
-#: part/models.py:3189
+#: part/models.py:3240
msgid "Calculated minimum cost of variant parts"
msgstr "Beregnet minimal kostnad for variantdeler"
-#: part/models.py:3195
+#: part/models.py:3246
msgid "Maximum Variant Cost"
msgstr "Maksimal Variantkostnad"
-#: part/models.py:3196
+#: part/models.py:3247
msgid "Calculated maximum cost of variant parts"
msgstr "Beregnet maksimal kostnad for variantdeler"
-#: part/models.py:3203
+#: part/models.py:3254
msgid "Override minimum cost"
msgstr "Overstyr minstekostnad"
-#: part/models.py:3210
+#: part/models.py:3261
msgid "Override maximum cost"
msgstr "Overstyr maksimal kostnad"
-#: part/models.py:3217
+#: part/models.py:3268
msgid "Calculated overall minimum cost"
msgstr "Beregnet samlet minimal kostnad"
-#: part/models.py:3224
+#: part/models.py:3275
msgid "Calculated overall maximum cost"
msgstr "Beregnet samlet maksimal kostnad"
-#: part/models.py:3230
+#: part/models.py:3281
msgid "Minimum Sale Price"
msgstr "Minimal salgspris"
-#: part/models.py:3231
+#: part/models.py:3282
msgid "Minimum sale price based on price breaks"
msgstr "Minimal salgspris basert på prisbrudd"
-#: part/models.py:3237
+#: part/models.py:3288
msgid "Maximum Sale Price"
msgstr "Maksimal Salgspris"
-#: part/models.py:3238
+#: part/models.py:3289
msgid "Maximum sale price based on price breaks"
msgstr "Maksimal salgspris basert på prisbrudd"
-#: part/models.py:3244
+#: part/models.py:3295
msgid "Minimum Sale Cost"
msgstr "Minimal Salgskostnad"
-#: part/models.py:3245
+#: part/models.py:3296
msgid "Minimum historical sale price"
msgstr "Minimal historisk salgspris"
-#: part/models.py:3251
+#: part/models.py:3302
msgid "Maximum Sale Cost"
msgstr "Maksimal Salgskostnad"
-#: part/models.py:3252
+#: part/models.py:3303
msgid "Maximum historical sale price"
msgstr "Maksimal historisk salgspris"
-#: part/models.py:3271
+#: part/models.py:3322
msgid "Part for stocktake"
msgstr "Del for varetelling"
-#: part/models.py:3276
+#: part/models.py:3327
msgid "Item Count"
msgstr "Antall"
-#: part/models.py:3277
+#: part/models.py:3328
msgid "Number of individual stock entries at time of stocktake"
msgstr "Antall individuelle lagerenheter på tidspunkt for varetelling"
-#: part/models.py:3285
+#: part/models.py:3336
msgid "Total available stock at time of stocktake"
msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling"
-#: part/models.py:3289 part/models.py:3372
+#: part/models.py:3340 part/models.py:3423 part/serializers.py:263
#: part/templates/part/part_scheduling.html:13
#: report/templates/report/inventree_test_report.html:106
#: templates/InvenTree/settings/plugin_settings.html:37
#: templates/InvenTree/settings/settings_staff_js.html:543
-#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:826
-#: templates/js/translated/pricing.js:950
-#: templates/js/translated/purchase_order.js:1801
-#: templates/js/translated/stock.js:2905
+#: templates/js/translated/part.js:1092 templates/js/translated/pricing.js:824
+#: templates/js/translated/pricing.js:948
+#: templates/js/translated/purchase_order.js:1785
+#: templates/js/translated/stock.js:2906
msgid "Date"
msgstr "Dato"
-#: part/models.py:3290
+#: part/models.py:3341
msgid "Date stocktake was performed"
msgstr "Dato for utført lagertelling"
-#: part/models.py:3298
+#: part/models.py:3349
msgid "Additional notes"
msgstr "Flere notater"
-#: part/models.py:3308
+#: part/models.py:3359
msgid "User who performed this stocktake"
msgstr "Bruker som utførte denne lagertellingen"
-#: part/models.py:3314
+#: part/models.py:3365
msgid "Minimum Stock Cost"
msgstr "Minimal lagerkostnad"
-#: part/models.py:3315
+#: part/models.py:3366
msgid "Estimated minimum cost of stock on hand"
msgstr "Estimert minimal kostnad for lagerbeholdning"
-#: part/models.py:3321
+#: part/models.py:3372
msgid "Maximum Stock Cost"
msgstr "Maksimal lagerkostnad"
-#: part/models.py:3322
+#: part/models.py:3373
msgid "Estimated maximum cost of stock on hand"
msgstr "Estimert maksimal kostnad for lagerbeholdning"
-#: part/models.py:3378 templates/InvenTree/settings/settings_staff_js.html:532
+#: part/models.py:3429 templates/InvenTree/settings/settings_staff_js.html:532
msgid "Report"
msgstr "Rapport"
-#: part/models.py:3379
+#: part/models.py:3430
msgid "Stocktake report file (generated internally)"
msgstr "Lagertellingsrapportfil (generert internt)"
-#: part/models.py:3384 templates/InvenTree/settings/settings_staff_js.html:539
+#: part/models.py:3435 templates/InvenTree/settings/settings_staff_js.html:539
msgid "Part Count"
msgstr "Antall deler"
-#: part/models.py:3385
+#: part/models.py:3436
msgid "Number of parts covered by stocktake"
msgstr "Antall deler dekket av varetellingen"
-#: part/models.py:3395
+#: part/models.py:3446
msgid "User who requested this stocktake report"
msgstr "Bruker som forespurte varetellingsrapporten"
-#: part/models.py:3405
+#: part/models.py:3456
msgid "Part Sale Price Break"
msgstr ""
-#: part/models.py:3517
+#: part/models.py:3568
msgid "Part Test Template"
msgstr ""
-#: part/models.py:3543
+#: part/models.py:3594
msgid "Invalid template name - must include at least one alphanumeric character"
msgstr ""
-#: part/models.py:3564 part/models.py:3733
+#: part/models.py:3615 part/models.py:3784
msgid "Choices must be unique"
msgstr "Valg må være unike"
-#: part/models.py:3575
-msgid "Test templates can only be created for trackable parts"
-msgstr "Testmaler kan bare bli opprettet for sporbare deler"
+#: part/models.py:3626
+msgid "Test templates can only be created for testable parts"
+msgstr ""
-#: part/models.py:3586
+#: part/models.py:3637
msgid "Test template with the same key already exists for part"
msgstr ""
-#: part/models.py:3603 templates/js/translated/part.js:2898
+#: part/models.py:3654 templates/js/translated/part.js:2898
msgid "Test Name"
msgstr "Testnavn"
-#: part/models.py:3604
+#: part/models.py:3655
msgid "Enter a name for the test"
msgstr "Angi et navn for testen"
-#: part/models.py:3610
+#: part/models.py:3661
msgid "Test Key"
msgstr ""
-#: part/models.py:3611
+#: part/models.py:3662
msgid "Simplified key for the test"
msgstr ""
-#: part/models.py:3618
+#: part/models.py:3669
msgid "Test Description"
msgstr "Testbeskrivelse"
-#: part/models.py:3619
+#: part/models.py:3670
msgid "Enter description for this test"
msgstr "Legg inn beskrivelse for denne testen"
-#: part/models.py:3623 report/models.py:208
+#: part/models.py:3674 report/models.py:216
#: templates/js/translated/part.js:2919
#: templates/js/translated/table_filters.js:502
msgid "Enabled"
msgstr "Aktivert"
-#: part/models.py:3623
+#: part/models.py:3674
msgid "Is this test enabled?"
msgstr ""
-#: part/models.py:3628 templates/js/translated/part.js:2927
+#: part/models.py:3679 templates/js/translated/part.js:2927
#: templates/js/translated/table_filters.js:498
msgid "Required"
msgstr "Påkrevd"
-#: part/models.py:3629
+#: part/models.py:3680
msgid "Is this test required to pass?"
msgstr "Er det påkrevd at denne testen bestås?"
-#: part/models.py:3634 templates/js/translated/part.js:2935
+#: part/models.py:3685 templates/js/translated/part.js:2935
msgid "Requires Value"
msgstr "Krever verdi"
-#: part/models.py:3635
+#: part/models.py:3686
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:3640 templates/js/translated/part.js:2942
+#: part/models.py:3691 templates/js/translated/part.js:2942
msgid "Requires Attachment"
msgstr "Krever vedlegg"
-#: part/models.py:3642
+#: part/models.py:3693
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:3648 part/models.py:3792 templates/js/translated/part.js:1643
+#: part/models.py:3699 part/models.py:3843 templates/js/translated/part.js:1643
msgid "Choices"
msgstr "Valg"
-#: part/models.py:3649
+#: part/models.py:3700
msgid "Valid choices for this test (comma-separated)"
msgstr ""
-#: part/models.py:3681
+#: part/models.py:3732
msgid "Part Parameter Template"
msgstr ""
-#: part/models.py:3708
+#: part/models.py:3759
msgid "Checkbox parameters cannot have units"
msgstr "Sjekkboksparameter kan ikke ha enheter"
-#: part/models.py:3713
+#: part/models.py:3764
msgid "Checkbox parameters cannot have choices"
msgstr "Sjekkboksparameter kan ikke ha valg"
-#: part/models.py:3750
+#: part/models.py:3801
msgid "Parameter template name must be unique"
msgstr "Navn på parametermal må være unikt"
-#: part/models.py:3765
+#: part/models.py:3816
msgid "Parameter Name"
msgstr "Parameternavn"
-#: part/models.py:3772
+#: part/models.py:3823
msgid "Physical units for this parameter"
msgstr "Fysisk enheter for denne parameteren"
-#: part/models.py:3780
+#: part/models.py:3831
msgid "Parameter description"
msgstr "Parameterbeskrivelse"
-#: part/models.py:3786 templates/js/translated/part.js:1634
+#: part/models.py:3837 templates/js/translated/part.js:1634
#: templates/js/translated/table_filters.js:837
msgid "Checkbox"
msgstr "Sjekkboks"
-#: part/models.py:3787
+#: part/models.py:3838
msgid "Is this parameter a checkbox?"
msgstr "Er dette parameteret en sjekkboks?"
-#: part/models.py:3793
+#: part/models.py:3844
msgid "Valid choices for this parameter (comma-separated)"
msgstr "Gyldige valg for denne parameteren (kommaseparert)"
-#: part/models.py:3827
+#: part/models.py:3881
msgid "Part Parameter"
msgstr ""
-#: part/models.py:3853
+#: part/models.py:3907
msgid "Parameter cannot be modified - part is locked"
msgstr ""
-#: part/models.py:3889
+#: part/models.py:3945
msgid "Invalid choice for parameter value"
msgstr "Ugyldig valg for parameterverdi"
-#: part/models.py:3938
+#: part/models.py:3996
msgid "Parent Part"
msgstr "Overordnet del"
-#: part/models.py:3946 part/models.py:4054 part/models.py:4055
+#: part/models.py:4004 part/models.py:4112 part/models.py:4113
#: templates/InvenTree/settings/settings_staff_js.html:295
msgid "Parameter Template"
msgstr "Parametermal"
-#: part/models.py:3952
+#: part/models.py:4010
msgid "Parameter Value"
msgstr "Parameterverdi"
-#: part/models.py:4002
+#: part/models.py:4060
msgid "Part Category Parameter Template"
msgstr ""
-#: part/models.py:4061 templates/InvenTree/settings/settings_staff_js.html:304
+#: part/models.py:4119 templates/InvenTree/settings/settings_staff_js.html:304
msgid "Default Value"
msgstr "Standardverdi"
-#: part/models.py:4062
+#: part/models.py:4120
msgid "Default Parameter Value"
msgstr "Standard Parameterverdi"
-#: part/models.py:4100
+#: part/models.py:4158
msgid "Part ID or part name"
msgstr "Del-ID eller delnavn"
-#: part/models.py:4101
+#: part/models.py:4159
msgid "Unique part ID value"
msgstr "Unik del-ID-verdi"
-#: part/models.py:4103
+#: part/models.py:4161
msgid "Part IPN value"
msgstr "Delens interne delnummerverdi"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "Level"
msgstr "Nivå"
-#: part/models.py:4104
+#: part/models.py:4162
msgid "BOM level"
msgstr "BOM-nivå"
-#: part/models.py:4215
+#: part/models.py:4272
msgid "BOM item cannot be modified - assembly is locked"
msgstr ""
-#: part/models.py:4222
+#: part/models.py:4279
msgid "BOM item cannot be modified - variant assembly is locked"
msgstr ""
-#: part/models.py:4232
+#: part/models.py:4289
msgid "Select parent part"
msgstr "Velg overordnet del"
-#: part/models.py:4242
+#: part/models.py:4299
msgid "Sub part"
msgstr "Underordnet del"
-#: part/models.py:4243
+#: part/models.py:4300
msgid "Select part to be used in BOM"
msgstr "Velg del som skal brukes i BOM"
-#: part/models.py:4254
+#: part/models.py:4311
msgid "BOM quantity for this BOM item"
msgstr "BOM-antall for denne BOM-artikkelen"
-#: part/models.py:4260
+#: part/models.py:4317
msgid "This BOM item is optional"
msgstr "Denne BOM-artikkelen er valgfri"
-#: part/models.py:4266
+#: part/models.py:4323
msgid "This BOM item is consumable (it is not tracked in build orders)"
msgstr "Denne BOM-artikkelen er forbruksvare (den spores ikke i produksjonsordrer)"
-#: part/models.py:4273 part/templates/part/upload_bom.html:55
+#: part/models.py:4330 part/templates/part/upload_bom.html:55
msgid "Overage"
msgstr "Svinn"
-#: part/models.py:4274
+#: part/models.py:4331
msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Forventet produksjonssvinn (absolutt eller prosent)"
-#: part/models.py:4281
+#: part/models.py:4338
msgid "BOM item reference"
msgstr "BOM-artikkelreferanse"
-#: part/models.py:4289
+#: part/models.py:4346
msgid "BOM item notes"
msgstr "BOM-artikkelnotater"
-#: part/models.py:4295
+#: part/models.py:4352
msgid "Checksum"
msgstr "Kontrollsum"
-#: part/models.py:4296
+#: part/models.py:4353
msgid "BOM line checksum"
msgstr "BOM-linje kontrollsum"
-#: part/models.py:4301 templates/js/translated/table_filters.js:181
+#: part/models.py:4358 templates/js/translated/table_filters.js:181
msgid "Validated"
msgstr "Godkjent"
-#: part/models.py:4302
+#: part/models.py:4359
msgid "This BOM item has been validated"
msgstr "Denne BOM-artikkelen er godkjent"
-#: part/models.py:4307 part/templates/part/upload_bom.html:57
+#: part/models.py:4364 part/templates/part/upload_bom.html:57
#: templates/js/translated/bom.js:1054
#: templates/js/translated/table_filters.js:185
#: templates/js/translated/table_filters.js:218
msgid "Gets inherited"
msgstr "Arves"
-#: part/models.py:4308
+#: part/models.py:4365
msgid "This BOM item is inherited by BOMs for variant parts"
msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler"
-#: part/models.py:4314
+#: part/models.py:4371
msgid "Stock items for variant parts can be used for this BOM item"
msgstr "Lagervarer for variantdeler kan brukes for denne BOM-artikkelen"
-#: part/models.py:4399 stock/models.py:685
+#: part/models.py:4456 stock/models.py:762
msgid "Quantity must be integer value for trackable parts"
msgstr "Antall må være heltallsverdi for sporbare deler"
-#: part/models.py:4409 part/models.py:4411
+#: part/models.py:4466 part/models.py:4468
msgid "Sub part must be specified"
msgstr "Underordnet del må angis"
-#: part/models.py:4551
+#: part/models.py:4613
msgid "BOM Item Substitute"
msgstr "BOM-artikkel erstatning"
-#: part/models.py:4572
+#: part/models.py:4634
msgid "Substitute part cannot be the same as the master part"
msgstr "Erstatningsdel kan ikke være samme som hoveddelen"
-#: part/models.py:4585
+#: part/models.py:4647
msgid "Parent BOM item"
msgstr "Overordnet BOM-artikkel"
-#: part/models.py:4593
+#: part/models.py:4655
msgid "Substitute part"
msgstr "Erstatningsdel"
-#: part/models.py:4609
+#: part/models.py:4671
msgid "Part 1"
msgstr "Del 1"
-#: part/models.py:4617
+#: part/models.py:4679
msgid "Part 2"
msgstr "Del 2"
-#: part/models.py:4618
+#: part/models.py:4680
msgid "Select Related Part"
msgstr "Velg relatert del"
-#: part/models.py:4637
+#: part/models.py:4699
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:4642
+#: part/models.py:4704
msgid "Duplicate relationship already exists"
msgstr "Duplikatforhold eksisterer allerede"
@@ -7449,340 +7662,352 @@ msgstr ""
msgid "Number of results recorded against this template"
msgstr ""
-#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:616
+#: part/serializers.py:225 part/serializers.py:243 stock/serializers.py:643
msgid "Purchase currency of this stock item"
msgstr "Innkjøpsvaluta for lagervaren"
-#: part/serializers.py:291
+#: part/serializers.py:268
+msgid "Speculative Quantity"
+msgstr ""
+
+#: part/serializers.py:277
+msgid "Model ID"
+msgstr ""
+
+#: part/serializers.py:324
msgid "Number of parts using this template"
msgstr ""
-#: part/serializers.py:421
+#: part/serializers.py:465
msgid "No parts selected"
msgstr "Ingen deler valgt"
-#: part/serializers.py:431
+#: part/serializers.py:475
msgid "Select category"
msgstr "Velg kategori"
-#: part/serializers.py:466
+#: part/serializers.py:510
msgid "Original Part"
msgstr "Original Del"
-#: part/serializers.py:467
+#: part/serializers.py:511
msgid "Select original part to duplicate"
msgstr "Velg original del å duplisere"
-#: part/serializers.py:472
+#: part/serializers.py:516
msgid "Copy Image"
msgstr "Kopier Bilde"
-#: part/serializers.py:473
+#: part/serializers.py:517
msgid "Copy image from original part"
msgstr "Kopier bilde fra originaldel"
-#: part/serializers.py:479 part/templates/part/detail.html:293
+#: part/serializers.py:523 part/templates/part/detail.html:293
msgid "Copy BOM"
msgstr "Kopier Stykkliste"
-#: part/serializers.py:480
+#: part/serializers.py:524
msgid "Copy bill of materials from original part"
msgstr "Kopier stykkliste fra original del"
-#: part/serializers.py:486
+#: part/serializers.py:530
msgid "Copy Parameters"
msgstr "Kopier parametere"
-#: part/serializers.py:487
+#: part/serializers.py:531
msgid "Copy parameter data from original part"
msgstr "Kopier parameterdata fra originaldel"
-#: part/serializers.py:493
+#: part/serializers.py:537
msgid "Copy Notes"
msgstr "Kopier notater"
-#: part/serializers.py:494
+#: part/serializers.py:538
msgid "Copy notes from original part"
msgstr "Kopier notater fra originaldel"
-#: part/serializers.py:512
+#: part/serializers.py:556
msgid "Initial Stock Quantity"
msgstr "Innledende lagerbeholdning"
-#: part/serializers.py:514
+#: part/serializers.py:558
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:521
+#: part/serializers.py:565
msgid "Initial Stock Location"
msgstr "Innledende lagerplassering"
-#: part/serializers.py:522
+#: part/serializers.py:566
msgid "Specify initial stock location for this Part"
msgstr "Angi initiell lagerplasering for denne delen"
-#: part/serializers.py:539
+#: part/serializers.py:583
msgid "Select supplier (or leave blank to skip)"
msgstr "Velg leverandør (eller la stå tom for å hoppe over)"
-#: part/serializers.py:555
+#: part/serializers.py:599
msgid "Select manufacturer (or leave blank to skip)"
msgstr "Velg produsent (eller la stå tom for å hoppe over)"
-#: part/serializers.py:565
+#: part/serializers.py:609
msgid "Manufacturer part number"
msgstr "Produsentens delenummer"
-#: part/serializers.py:572
+#: part/serializers.py:616
msgid "Selected company is not a valid supplier"
msgstr "Valgt firma er ikke en gyldig leverandør"
-#: part/serializers.py:581
+#: part/serializers.py:625
msgid "Selected company is not a valid manufacturer"
msgstr "Valgt firma er ikke en gyldig produsent"
-#: part/serializers.py:592
+#: part/serializers.py:636
msgid "Manufacturer part matching this MPN already exists"
msgstr "Produsentdel som matcher dette MPN-et, finnes allerede"
-#: part/serializers.py:599
+#: part/serializers.py:643
msgid "Supplier part matching this SKU already exists"
msgstr "Leverandørdel som matcher denne SKU-en, finnes allerede"
-#: part/serializers.py:903
+#: part/serializers.py:955
msgid "Revisions"
msgstr ""
-#: part/serializers.py:908
+#: part/serializers.py:960
msgid "Unallocated Stock"
msgstr ""
-#: part/serializers.py:911
+#: part/serializers.py:963
msgid "Variant Stock"
msgstr ""
-#: part/serializers.py:941 part/templates/part/copy_part.html:9
+#: part/serializers.py:993 part/templates/part/copy_part.html:9
#: templates/js/translated/part.js:474
msgid "Duplicate Part"
msgstr "Dupliser del"
-#: part/serializers.py:942
+#: part/serializers.py:994
msgid "Copy initial data from another Part"
msgstr "Kopier innledende data fra en annen del"
-#: part/serializers.py:948 templates/js/translated/part.js:103
+#: part/serializers.py:1000 templates/js/translated/part.js:103
msgid "Initial Stock"
msgstr "Innledende lagerbeholdning"
-#: part/serializers.py:949
+#: part/serializers.py:1001
msgid "Create Part with initial stock quantity"
msgstr "Lag en del med innledende lagermengde"
-#: part/serializers.py:955
+#: part/serializers.py:1007
msgid "Supplier Information"
msgstr "Leverandøropplysninger"
-#: part/serializers.py:956
+#: part/serializers.py:1008
msgid "Add initial supplier information for this part"
msgstr "Legg til innledende leverandørinformasjon for denne delen"
-#: part/serializers.py:964
+#: part/serializers.py:1016
msgid "Copy Category Parameters"
msgstr "Kopier kategoriparametre"
-#: part/serializers.py:965
+#: part/serializers.py:1017
msgid "Copy parameter templates from selected part category"
msgstr "Kopier parametermaler fra valgt delkategori"
-#: part/serializers.py:970
+#: part/serializers.py:1022
msgid "Existing Image"
msgstr "Eksisterende bilde"
-#: part/serializers.py:971
+#: part/serializers.py:1023
msgid "Filename of an existing part image"
msgstr "Filnavn for et eksisterende del-bilde"
-#: part/serializers.py:988
+#: part/serializers.py:1040
msgid "Image file does not exist"
msgstr "Bildefilen finnes ikke"
-#: part/serializers.py:1194
+#: part/serializers.py:1247
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:1204
+#: part/serializers.py:1257
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:1214
+#: part/serializers.py:1267
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:1220
+#: part/serializers.py:1273
msgid "Exclude External Stock"
msgstr "Ekskluder ekstern lagerbeholdning"
-#: part/serializers.py:1221
+#: part/serializers.py:1274
msgid "Exclude stock items in external locations"
msgstr "Ekskluder lagervarer i eksterne lokasjoner"
-#: part/serializers.py:1226
+#: part/serializers.py:1279
msgid "Generate Report"
msgstr "Generer rapport"
-#: part/serializers.py:1227
+#: part/serializers.py:1280
msgid "Generate report file containing calculated stocktake data"
msgstr "Genererer rapport som inneholder beregnede lagerdata"
-#: part/serializers.py:1232
+#: part/serializers.py:1285
msgid "Update Parts"
msgstr "Oppdater deler"
-#: part/serializers.py:1233
+#: part/serializers.py:1286
msgid "Update specified parts with calculated stocktake data"
msgstr "Oppdater spesifiserte deler med beregnede lagerbeholdningsdata"
-#: part/serializers.py:1241
+#: part/serializers.py:1294
msgid "Stocktake functionality is not enabled"
msgstr "Lagerbeholdningsfunksjonalitet er ikke aktivert"
-#: part/serializers.py:1347
+#: part/serializers.py:1299
+msgid "Background worker check failed"
+msgstr "Sjekk av bakgrunnsarbeider mislyktes"
+
+#: part/serializers.py:1401
msgid "Override calculated value for minimum price"
msgstr "Overstyr beregnet verdi for minimumspris"
-#: part/serializers.py:1354
+#: part/serializers.py:1408
msgid "Minimum price currency"
msgstr "Valuta for minstepris"
-#: part/serializers.py:1362
+#: part/serializers.py:1416
msgid "Override calculated value for maximum price"
msgstr "Overstyr beregnet verdi for maksimal pris"
-#: part/serializers.py:1369
+#: part/serializers.py:1423
msgid "Maximum price currency"
msgstr "Valuta for maksimal pris"
-#: part/serializers.py:1398
+#: part/serializers.py:1452
msgid "Update"
msgstr "Oppdater"
-#: part/serializers.py:1399
+#: part/serializers.py:1453
msgid "Update pricing for this part"
msgstr "Oppdater priser for denne delen"
-#: part/serializers.py:1422
+#: part/serializers.py:1476
#, python-brace-format
msgid "Could not convert from provided currencies to {default_currency}"
msgstr "Kan ikke konvertere fra gitte valutaer til {default_currency}"
-#: part/serializers.py:1429
+#: part/serializers.py:1483
msgid "Minimum price must not be greater than maximum price"
msgstr "Minsteprisen kan ikke være større enn maksimal pris"
-#: part/serializers.py:1432
+#: part/serializers.py:1486
msgid "Maximum price must not be less than minimum price"
msgstr "Maksimal pris kan ikke være mindre enn minstepris"
-#: part/serializers.py:1576
+#: part/serializers.py:1634
msgid "Select the parent assembly"
msgstr ""
-#: part/serializers.py:1585
+#: part/serializers.py:1643
msgid "Component Name"
msgstr ""
-#: part/serializers.py:1588
+#: part/serializers.py:1646
msgid "Component IPN"
msgstr ""
-#: part/serializers.py:1591
+#: part/serializers.py:1649
msgid "Component Description"
msgstr ""
-#: part/serializers.py:1597
+#: part/serializers.py:1655
msgid "Select the component part"
msgstr ""
-#: part/serializers.py:1606 part/templates/part/part_base.html:235
+#: part/serializers.py:1664 part/templates/part/part_base.html:243
#: templates/js/translated/bom.js:1219
msgid "Can Build"
msgstr "Kan Produsere"
-#: part/serializers.py:1837
+#: part/serializers.py:1899
msgid "Select part to copy BOM from"
msgstr "Velg del å kopiere BOM fra"
-#: part/serializers.py:1845
+#: part/serializers.py:1907
msgid "Remove Existing Data"
msgstr "Fjern eksisterende data"
-#: part/serializers.py:1846
+#: part/serializers.py:1908
msgid "Remove existing BOM items before copying"
msgstr "Fjern eksisterende BOM-artikler før kopiering"
-#: part/serializers.py:1851
+#: part/serializers.py:1913
msgid "Include Inherited"
msgstr "Inkluder arvede"
-#: part/serializers.py:1852
+#: part/serializers.py:1914
msgid "Include BOM items which are inherited from templated parts"
msgstr "Inkluder BOM-artikler som er arvet fra maldeler"
-#: part/serializers.py:1857
+#: part/serializers.py:1919
msgid "Skip Invalid Rows"
msgstr "Hopp over ugyldige rader"
-#: part/serializers.py:1858
+#: part/serializers.py:1920
msgid "Enable this option to skip invalid rows"
msgstr "Aktiver dette alternativet for å hoppe over ugyldige rader"
-#: part/serializers.py:1863
+#: part/serializers.py:1925
msgid "Copy Substitute Parts"
msgstr "Kopier erstatningsdeler"
-#: part/serializers.py:1864
+#: part/serializers.py:1926
msgid "Copy substitute parts when duplicate BOM items"
msgstr "Kopier erstatningsdeler når BOM-elementer dupliseres"
-#: part/serializers.py:1901
+#: part/serializers.py:1963
msgid "Clear Existing BOM"
msgstr "Nullstill eksisterende BOM"
-#: part/serializers.py:1902
+#: part/serializers.py:1964
msgid "Delete existing BOM items before uploading"
msgstr "Fjern eksisterende BOM-artikler før opplastning"
-#: part/serializers.py:1934
+#: part/serializers.py:1996
msgid "No part column specified"
msgstr "Ingen del-kolonne angitt"
-#: part/serializers.py:1978
+#: part/serializers.py:2040
msgid "Multiple matching parts found"
msgstr "Flere samsvarende deler funnet"
-#: part/serializers.py:1981
+#: part/serializers.py:2043
msgid "No matching part found"
msgstr "Ingen samsvarende del funnet"
-#: part/serializers.py:1984
+#: part/serializers.py:2045
msgid "Part is not designated as a component"
msgstr "Delen er ikke betegnet som en komponent"
-#: part/serializers.py:1993
+#: part/serializers.py:2054
msgid "Quantity not provided"
msgstr "Antall ikke oppgitt"
-#: part/serializers.py:2001
+#: part/serializers.py:2062
msgid "Invalid quantity"
msgstr "Ugyldig antall"
-#: part/serializers.py:2024
+#: part/serializers.py:2085
msgid "At least one BOM item is required"
msgstr "Minst en BOM-artikkel kreves"
#: part/stocktake.py:224 templates/js/translated/part.js:1073
#: templates/js/translated/part.js:1828 templates/js/translated/part.js:1884
-#: templates/js/translated/purchase_order.js:2154
+#: templates/js/translated/purchase_order.js:2138
msgid "Total Quantity"
msgstr "Totalt Antall"
@@ -7932,9 +8157,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:255 templates/InvenTree/settings/part_stocktake.html:30
+#: stock/admin.py:256 templates/InvenTree/settings/part_stocktake.html:30
#: templates/InvenTree/settings/sidebar.html:53
-#: templates/js/translated/stock.js:2301 users/models.py:204
+#: templates/js/translated/stock.js:2302 users/models.py:204
msgid "Stocktake"
msgstr "Lagertelling"
@@ -8093,142 +8318,146 @@ msgstr "Velg filformat"
msgid "Part List"
msgstr "Deleliste"
-#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29
+#: part/templates/part/part_base.html:26 part/templates/part/part_base.html:30
msgid "You are subscribed to notifications for this part"
msgstr "Du abonnerer på varsler for denne delen"
-#: part/templates/part/part_base.html:33
+#: part/templates/part/part_base.html:34
msgid "Subscribe to notifications for this part"
msgstr "Abonner på varsler for denne delen"
-#: part/templates/part/part_base.html:52
+#: part/templates/part/part_base.html:53
#: stock/templates/stock/item_base.html:62
-#: stock/templates/stock/location.html:71 templates/js/translated/label.js:136
+#: stock/templates/stock/location.html:72 templates/js/translated/label.js:136
msgid "Print Label"
msgstr "Skriv ut etikett"
-#: part/templates/part/part_base.html:58
+#: part/templates/part/part_base.html:59
msgid "Show pricing information"
msgstr "Vis prisinformasjon"
-#: part/templates/part/part_base.html:63
-#: stock/templates/stock/item_base.html:110
-#: stock/templates/stock/location.html:80
+#: part/templates/part/part_base.html:64
+#: stock/templates/stock/item_base.html:107
+#: stock/templates/stock/location.html:81
msgid "Stock actions"
msgstr "Lagerhandlinger"
-#: part/templates/part/part_base.html:70
+#: part/templates/part/part_base.html:71
msgid "Count part stock"
msgstr "Tell delbeholdning"
-#: part/templates/part/part_base.html:76
+#: part/templates/part/part_base.html:77
msgid "Transfer part stock"
msgstr "Overfør delbeholdning"
-#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2299
+#: part/templates/part/part_base.html:92 templates/js/translated/part.js:2299
msgid "Part actions"
msgstr "Delhandlinger"
-#: part/templates/part/part_base.html:94
+#: part/templates/part/part_base.html:95
msgid "Duplicate part"
msgstr "Dupliser del"
-#: part/templates/part/part_base.html:97
+#: part/templates/part/part_base.html:98
msgid "Edit part"
msgstr "Rediger del"
-#: part/templates/part/part_base.html:100
+#: part/templates/part/part_base.html:101
msgid "Delete part"
msgstr "Slett del"
-#: part/templates/part/part_base.html:119
+#: part/templates/part/part_base.html:120
msgid "Part is a template part (variants can be made from this part)"
msgstr "Delen er en maldel (varianter kan lages fra denne delen)"
-#: part/templates/part/part_base.html:123
+#: part/templates/part/part_base.html:124
msgid "Part can be assembled from other parts"
msgstr "Delen kan sammenstilles fra andre deler"
-#: part/templates/part/part_base.html:127
+#: part/templates/part/part_base.html:128
msgid "Part can be used in assemblies"
msgstr "Delen kan brukes i sammenstillinger"
-#: part/templates/part/part_base.html:131
+#: part/templates/part/part_base.html:132
msgid "Part stock is tracked by serial number"
msgstr "Delelager spores via serienummer"
-#: part/templates/part/part_base.html:135
+#: part/templates/part/part_base.html:136
msgid "Part can be purchased from external suppliers"
msgstr "Delen kan kjøpes fra eksterne leverandører"
-#: part/templates/part/part_base.html:139
+#: part/templates/part/part_base.html:140
msgid "Part can be sold to customers"
msgstr "Delen kan selges til kunder"
-#: part/templates/part/part_base.html:145
+#: part/templates/part/part_base.html:146
msgid "Part is not active"
msgstr "Delen er ikke aktiv"
-#: part/templates/part/part_base.html:153
+#: part/templates/part/part_base.html:154
msgid "Part is virtual (not a physical part)"
msgstr "Delen er virtuall (ikke en fysisk del)"
-#: part/templates/part/part_base.html:163
-#: part/templates/part/part_base.html:690
+#: part/templates/part/part_base.html:164
+#: part/templates/part/part_base.html:698
msgid "Show Part Details"
msgstr "Vis detaljer for del"
#: part/templates/part/part_base.html:218
-#: stock/templates/stock/item_base.html:388
+msgid "Required for Orders"
+msgstr ""
+
+#: part/templates/part/part_base.html:226
+#: stock/templates/stock/item_base.html:385
msgid "Allocated to Build Orders"
msgstr "Tildelt til produksjonsordrer"
-#: part/templates/part/part_base.html:227
-#: stock/templates/stock/item_base.html:381
+#: part/templates/part/part_base.html:235
+#: stock/templates/stock/item_base.html:378
msgid "Allocated to Sales Orders"
msgstr "Tildelt til Salgsordrer"
-#: part/templates/part/part_base.html:300
+#: part/templates/part/part_base.html:308
msgid "Minimum stock level"
msgstr "Minimalt lagerbeholdningsnivå"
-#: part/templates/part/part_base.html:331 templates/js/translated/bom.js:1071
+#: part/templates/part/part_base.html:339 templates/js/translated/bom.js:1071
#: templates/js/translated/part.js:1271 templates/js/translated/part.js:2463
#: templates/js/translated/pricing.js:391
-#: templates/js/translated/pricing.js:1054
+#: templates/js/translated/pricing.js:1052
msgid "Price Range"
msgstr "Prisområde"
-#: part/templates/part/part_base.html:361
+#: part/templates/part/part_base.html:369
msgid "Latest Serial Number"
msgstr "Siste serienummer"
-#: part/templates/part/part_base.html:365
-#: stock/templates/stock/item_base.html:322
+#: part/templates/part/part_base.html:373
+#: stock/templates/stock/item_base.html:319
msgid "Search for serial number"
msgstr "Søk etter serienummer"
-#: part/templates/part/part_base.html:453
+#: part/templates/part/part_base.html:461
msgid "Part QR Code"
msgstr ""
-#: part/templates/part/part_base.html:470
+#: part/templates/part/part_base.html:478
msgid "Link Barcode to Part"
msgstr ""
-#: part/templates/part/part_base.html:520
+#: part/templates/part/part_base.html:528
msgid "Calculate"
msgstr ""
-#: part/templates/part/part_base.html:537
+#: part/templates/part/part_base.html:545
msgid "Remove associated image from this part"
msgstr ""
-#: part/templates/part/part_base.html:588
+#: part/templates/part/part_base.html:596
msgid "No matching images found"
msgstr ""
-#: part/templates/part/part_base.html:684
+#: part/templates/part/part_base.html:692
msgid "Hide Part Details"
msgstr ""
@@ -8282,13 +8511,13 @@ msgid "Variants"
msgstr "Varianter"
#: part/templates/part/part_sidebar.html:14
-#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:21
+#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:22
#: stock/templates/stock/stock_app_base.html:10
#: templates/InvenTree/search.html:153
#: templates/InvenTree/settings/sidebar.html:51
#: templates/js/translated/part.js:1249 templates/js/translated/part.js:2152
#: templates/js/translated/part.js:2411 templates/js/translated/stock.js:1066
-#: templates/js/translated/stock.js:2155 templates/navbar.html:31
+#: templates/js/translated/stock.js:2156 templates/navbar.html:31
msgid "Stock"
msgstr "Lagerbeholdning"
@@ -8324,17 +8553,17 @@ msgstr "Overstyr delprising"
#: part/templates/part/prices.html:18
#: templates/InvenTree/settings/settings_staff_js.html:80
#: templates/InvenTree/settings/user.html:24
-#: templates/js/translated/helpers.js:103
+#: templates/js/translated/helpers.js:104
#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3
#: templates/notes_buttons.html:4
msgid "Edit"
msgstr "Rediger"
-#: part/templates/part/prices.html:28 stock/admin.py:251
-#: stock/templates/stock/item_base.html:446
-#: templates/js/translated/company.js:1703
-#: templates/js/translated/company.js:1713
-#: templates/js/translated/stock.js:2331
+#: part/templates/part/prices.html:28 stock/admin.py:252
+#: stock/templates/stock/item_base.html:443
+#: templates/js/translated/company.js:1704
+#: templates/js/translated/company.js:1714
+#: templates/js/translated/stock.js:2332
msgid "Last Updated"
msgstr "Sist oppdatert"
@@ -8406,7 +8635,7 @@ msgid "Update Pricing"
msgstr ""
#: part/templates/part/stock_count.html:7
-#: templates/js/translated/model_renderers.js:228
+#: templates/js/translated/model_renderers.js:231
#: templates/js/translated/part.js:707 templates/js/translated/part.js:2147
#: templates/js/translated/part.js:2149
msgid "No Stock"
@@ -8486,7 +8715,7 @@ msgstr "Bilde for del ikke funnet"
msgid "Part Pricing"
msgstr "Delprising"
-#: plugin/api.py:172
+#: plugin/api.py:175
msgid "Plugin cannot be deleted as it is currently active"
msgstr ""
@@ -8498,78 +8727,85 @@ msgstr "Ingen handling spesifisert"
msgid "No matching action found"
msgstr "Ingen samsvarende handling funnet"
-#: plugin/base/barcodes/api.py:125 plugin/base/barcodes/api.py:371
-#: plugin/base/barcodes/api.py:546
+#: plugin/base/barcodes/api.py:203
msgid "No match found for barcode data"
msgstr "Ingen treff funnet for strekkodedata"
-#: plugin/base/barcodes/api.py:129
+#: plugin/base/barcodes/api.py:207
msgid "Match found for barcode data"
msgstr "Treff funnet for strekkodedata"
-#: plugin/base/barcodes/api.py:163 plugin/base/barcodes/serializers.py:45
+#: plugin/base/barcodes/api.py:245 plugin/base/barcodes/serializers.py:72
msgid "Model is not supported"
msgstr ""
-#: plugin/base/barcodes/api.py:168
+#: plugin/base/barcodes/api.py:250
msgid "Model instance not found"
msgstr ""
-#: plugin/base/barcodes/api.py:197
-#: templates/js/translated/purchase_order.js:1468
+#: plugin/base/barcodes/api.py:279
+#: templates/js/translated/purchase_order.js:1452
msgid "Barcode matches existing item"
msgstr "Strekkode samsvarer med ekisterende element"
-#: plugin/base/barcodes/api.py:336
+#: plugin/base/barcodes/api.py:418
msgid "No matching part data found"
msgstr "Ingen samsvarende del-data funnet"
-#: plugin/base/barcodes/api.py:353
+#: plugin/base/barcodes/api.py:434
msgid "No matching supplier parts found"
msgstr "Finner ingen matchende leverandørdeler"
-#: plugin/base/barcodes/api.py:357
+#: plugin/base/barcodes/api.py:437
msgid "Multiple matching supplier parts found"
msgstr "Flere samsvarende leverandørdeler funnet"
-#: plugin/base/barcodes/api.py:381
+#: plugin/base/barcodes/api.py:450 plugin/base/barcodes/api.py:664
+msgid "No matching plugin found for barcode data"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:460
msgid "Matched supplier part"
msgstr "Fant leverandørdel"
-#: plugin/base/barcodes/api.py:430
+#: plugin/base/barcodes/api.py:525
msgid "Item has already been received"
msgstr "Artikkelen er allerede mottatt"
-#: plugin/base/barcodes/api.py:467
+#: plugin/base/barcodes/api.py:563
msgid "No match for supplier barcode"
msgstr "Ingen treff for leverandørstrekkode"
-#: plugin/base/barcodes/api.py:510
+#: plugin/base/barcodes/api.py:612
msgid "Multiple matching line items found"
msgstr "Flere samsvarende elementer funnet"
-#: plugin/base/barcodes/api.py:513
+#: plugin/base/barcodes/api.py:615
msgid "No matching line item found"
msgstr "Ingen samsvarende element funnet"
-#: plugin/base/barcodes/api.py:551 plugin/base/barcodes/api.py:558
+#: plugin/base/barcodes/api.py:661
+msgid "No sales order provided"
+msgstr ""
+
+#: plugin/base/barcodes/api.py:670
msgid "Barcode does not match an existing stock item"
msgstr "Strekkoden samsvarer ikke med eksisterende lagervare"
-#: plugin/base/barcodes/api.py:569
+#: plugin/base/barcodes/api.py:686
msgid "Stock item does not match line item"
msgstr "Lagervare samsvarer ikke med linjeelement"
-#: plugin/base/barcodes/api.py:593 templates/js/translated/build.js:2780
-#: templates/js/translated/sales_order.js:1953
+#: plugin/base/barcodes/api.py:716 templates/js/translated/build.js:2798
+#: templates/js/translated/sales_order.js:1934
msgid "Insufficient stock available"
msgstr "Utilstrekkelig lagerbeholdning"
-#: plugin/base/barcodes/api.py:602
+#: plugin/base/barcodes/api.py:729
msgid "Stock item allocated to sales order"
msgstr "Lagervaren er tildelt en salgsordre"
-#: plugin/base/barcodes/api.py:606
+#: plugin/base/barcodes/api.py:732
msgid "Not enough information"
msgstr "Ikke nok informasjon"
@@ -8591,75 +8827,75 @@ msgstr "Ingen samsvarende innkjøpsordre for '{order}'"
msgid "Purchase order does not match supplier"
msgstr "Innkjøpsordre stemmer ikke med leverandør"
-#: plugin/base/barcodes/mixins.py:465
+#: plugin/base/barcodes/mixins.py:467
msgid "Failed to find pending line item for supplier part"
msgstr "Fant ikke ventende artikkel for leverandørdel"
-#: plugin/base/barcodes/mixins.py:496
+#: plugin/base/barcodes/mixins.py:498
msgid "Further information required to receive line item"
msgstr "Mer informasjon nødvendig for å motta artikkelen"
-#: plugin/base/barcodes/mixins.py:504
+#: plugin/base/barcodes/mixins.py:506
msgid "Received purchase order line item"
msgstr "Mottok ordreartikkelen"
-#: plugin/base/barcodes/serializers.py:21
+#: plugin/base/barcodes/serializers.py:48
msgid "Scanned barcode data"
msgstr "Skannet strekkodedata"
-#: plugin/base/barcodes/serializers.py:30
+#: plugin/base/barcodes/serializers.py:57
msgid "Model name to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:35
+#: plugin/base/barcodes/serializers.py:62
msgid "Primary key of model object to generate barcode for"
msgstr ""
-#: plugin/base/barcodes/serializers.py:105
+#: plugin/base/barcodes/serializers.py:132
msgid "Purchase Order to allocate items against"
msgstr "Innkjøpsordre å tildele artikler mot"
-#: plugin/base/barcodes/serializers.py:111
+#: plugin/base/barcodes/serializers.py:138
msgid "Purchase order is not pending"
msgstr "Innkjøpsordre er ikke ventende"
-#: plugin/base/barcodes/serializers.py:129
+#: plugin/base/barcodes/serializers.py:156
msgid "PurchaseOrder to receive items against"
msgstr "Innkjøpsordre å motta artikler mot"
-#: plugin/base/barcodes/serializers.py:135
+#: plugin/base/barcodes/serializers.py:162
msgid "Purchase order has not been placed"
msgstr "Innkjøpsordren har ikke blitt sendt"
-#: plugin/base/barcodes/serializers.py:143
+#: plugin/base/barcodes/serializers.py:170
msgid "Location to receive items into"
msgstr "Plassering å motta deler til"
-#: plugin/base/barcodes/serializers.py:149
+#: plugin/base/barcodes/serializers.py:176
msgid "Cannot select a structural location"
msgstr "Kan ikke velge en strukturell plassering"
-#: plugin/base/barcodes/serializers.py:163
+#: plugin/base/barcodes/serializers.py:190
msgid "Sales Order to allocate items against"
msgstr "Salgsordre å tildele artikler mot"
-#: plugin/base/barcodes/serializers.py:169
+#: plugin/base/barcodes/serializers.py:196
msgid "Sales order is not pending"
msgstr "Salgsordre er ikke ventende"
-#: plugin/base/barcodes/serializers.py:177
+#: plugin/base/barcodes/serializers.py:204
msgid "Sales order line item to allocate items against"
msgstr "Salgsordrelinje å tildele artikler mot"
-#: plugin/base/barcodes/serializers.py:184
+#: plugin/base/barcodes/serializers.py:211
msgid "Sales order shipment to allocate items against"
msgstr "Salgsordre-forsendelse å tildele artikler mot"
-#: plugin/base/barcodes/serializers.py:190
+#: plugin/base/barcodes/serializers.py:217
msgid "Shipment has already been delivered"
msgstr "Forsendelsen er allerede levert"
-#: plugin/base/barcodes/serializers.py:195
+#: plugin/base/barcodes/serializers.py:222
msgid "Quantity to allocate"
msgstr "Antall å tildele"
@@ -8679,6 +8915,42 @@ msgstr ""
msgid "No items provided to print"
msgstr ""
+#: plugin/base/ui/serializers.py:30
+msgid "Plugin Name"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:34
+msgid "Feature Type"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:39
+msgid "Feature Label"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:44
+msgid "Feature Title"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:49
+msgid "Feature Description"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:54
+msgid "Feature Icon"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:58
+msgid "Feature Options"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:61
+msgid "Feature Context"
+msgstr ""
+
+#: plugin/base/ui/serializers.py:64
+msgid "Feature Source (javascript)"
+msgstr ""
+
#: plugin/builtin/barcodes/inventree_barcode.py:27
msgid "InvenTree Barcodes"
msgstr "InvenTree-strekkoder"
@@ -8756,7 +9028,7 @@ msgstr "Slack innkommende webhook"
msgid "URL that is used to send messages to a slack channel"
msgstr "URL brukt til å sende meldinger til en Slack-kanal"
-#: plugin/builtin/integration/core_notifications.py:164
+#: plugin/builtin/integration/core_notifications.py:166
msgid "Open link"
msgstr "Åpne lenke"
@@ -8794,11 +9066,11 @@ msgstr ""
msgid "Provides support for printing using a machine"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:149
+#: plugin/builtin/labels/inventree_machine.py:151
msgid "last used"
msgstr ""
-#: plugin/builtin/labels/inventree_machine.py:166
+#: plugin/builtin/labels/inventree_machine.py:168
msgid "Options"
msgstr ""
@@ -8822,7 +9094,7 @@ msgstr "Kantlinjer"
msgid "Print a border around each label"
msgstr "Skriv ut en kant rundt hver etikett"
-#: plugin/builtin/labels/label_sheet.py:47 report/models.py:307
+#: plugin/builtin/labels/label_sheet.py:47 report/models.py:315
msgid "Landscape"
msgstr "Liggende"
@@ -8894,19 +9166,19 @@ msgstr "Gir støtte for å skanne TME-strekkoder"
msgid "The Supplier which acts as 'TME'"
msgstr "Leverandøren som fungerer som \"TME\""
-#: plugin/installer.py:194 plugin/installer.py:282
+#: plugin/installer.py:199 plugin/installer.py:282
msgid "Only staff users can administer plugins"
msgstr ""
-#: plugin/installer.py:197
+#: plugin/installer.py:202
msgid "Plugin installation is disabled"
msgstr ""
-#: plugin/installer.py:248
+#: plugin/installer.py:246
msgid "Installed plugin successfully"
msgstr "Installasjon av utvidelse vellykket"
-#: plugin/installer.py:254
+#: plugin/installer.py:251
#, python-brace-format
msgid "Installed plugin into {path}"
msgstr "Installerte utvidelsen til {path}"
@@ -8943,10 +9215,6 @@ msgstr "Konfigurasjon av utvidelse"
msgid "Plugin Configurations"
msgstr "Konfigurasjon av utvidelser"
-#: plugin/models.py:43 users/models.py:100
-msgid "Key"
-msgstr "Nøkkel"
-
#: plugin/models.py:44
msgid "Key of plugin"
msgstr "Utvidelsens \"Key\""
@@ -8955,7 +9223,7 @@ msgstr "Utvidelsens \"Key\""
msgid "PluginName of the plugin"
msgstr "Navn på utvidelsen"
-#: plugin/models.py:59 plugin/serializers.py:90
+#: plugin/models.py:59 plugin/serializers.py:115
msgid "Package Name"
msgstr "Pakkenavn"
@@ -8984,17 +9252,17 @@ msgstr "Innebygd utvidelse"
msgid "Package Plugin"
msgstr ""
-#: plugin/models.py:220 report/models.py:474
+#: plugin/models.py:259 report/models.py:482
#: templates/InvenTree/settings/plugin_settings.html:9
#: templates/js/translated/plugin.js:51
msgid "Plugin"
msgstr "Utvidelse"
-#: plugin/models.py:267
+#: plugin/models.py:306
msgid "Method"
msgstr "Metode"
-#: plugin/plugin.py:270
+#: plugin/plugin.py:275
msgid "No author found"
msgstr "Ingen forfatter funnet"
@@ -9053,81 +9321,157 @@ msgstr "Eksempel valutakonverterings-utvidelse"
msgid "InvenTree Contributors"
msgstr "InvenTree-bidragsytere"
-#: plugin/serializers.py:81
+#: plugin/samples/integration/user_interface_sample.py:27
+msgid "Enable Part Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:28
+msgid "Enable custom panels for Part views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:33
+msgid "Enable Purchase Order Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:34
+msgid "Enable custom panels for Purchase Order views"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:39
+msgid "Enable Broken Panels"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:40
+msgid "Enable broken panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:45
+msgid "Enable Dynamic Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:46
+msgid "Enable dynamic panels for testing"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:98
+msgid "Part Panel"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:131
+msgid "Broken Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:133
+msgid "This is a broken dashboard item - it will not render!"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:139
+msgid "Sample Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:141
+msgid "This is a sample dashboard item. It renders a simple string of HTML content."
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:147
+msgid "Context Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:161
+msgid "Admin Dashboard Item"
+msgstr ""
+
+#: plugin/samples/integration/user_interface_sample.py:162
+msgid "This is an admin-only dashboard item."
+msgstr ""
+
+#: plugin/serializers.py:82
+msgid "Source File"
+msgstr ""
+
+#: plugin/serializers.py:83
+msgid "Path to the source file for admin integration"
+msgstr ""
+
+#: plugin/serializers.py:90
+msgid "Optional context data for the admin integration"
+msgstr ""
+
+#: plugin/serializers.py:106
msgid "Source URL"
msgstr "Kilde-URL"
-#: plugin/serializers.py:83
+#: plugin/serializers.py:108
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:92
+#: plugin/serializers.py:117
msgid "Name for the Plugin Package - can also contain a version indicator"
msgstr "Navn på utvidelsespakke – kan også inneholde en versjonsindikator"
-#: plugin/serializers.py:99
+#: plugin/serializers.py:124
#: templates/InvenTree/settings/plugin_settings.html:42
#: templates/js/translated/plugin.js:86
msgid "Version"
msgstr "Versjon"
-#: plugin/serializers.py:101
+#: plugin/serializers.py:126
msgid "Version specifier for the plugin. Leave blank for latest version."
msgstr ""
-#: plugin/serializers.py:106
+#: plugin/serializers.py:131
msgid "Confirm plugin installation"
msgstr "Bekreft installasjon av utvidelse"
-#: plugin/serializers.py:108
+#: plugin/serializers.py:133
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:121
+#: plugin/serializers.py:146
msgid "Installation not confirmed"
msgstr "Installasjonen ble ikke bekreftet"
-#: plugin/serializers.py:123
+#: plugin/serializers.py:148
msgid "Either packagename of URL must be provided"
msgstr "Enten pakkenavn eller URL må angis"
-#: plugin/serializers.py:161
+#: plugin/serializers.py:184
msgid "Full reload"
msgstr "Full omlasting"
-#: plugin/serializers.py:162
+#: plugin/serializers.py:185
msgid "Perform a full reload of the plugin registry"
msgstr "Utfør en full omlasting av utvidelsesregisteret"
-#: plugin/serializers.py:168
+#: plugin/serializers.py:191
msgid "Force reload"
msgstr "Tvangsomlasting"
-#: plugin/serializers.py:170
+#: plugin/serializers.py:193
msgid "Force a reload of the plugin registry, even if it is already loaded"
msgstr "Tving en omlasting av utvidelsesregisteret, selv om det allerede er lastet"
-#: plugin/serializers.py:177
+#: plugin/serializers.py:200
msgid "Collect plugins"
msgstr "Hent inn utvidelser"
-#: plugin/serializers.py:178
+#: plugin/serializers.py:201
msgid "Collect plugins and add them to the registry"
msgstr "Hent inn utvidelser og legg dem til i registeret"
-#: plugin/serializers.py:205
+#: plugin/serializers.py:228
msgid "Activate Plugin"
msgstr "Aktivér utvidelse"
-#: plugin/serializers.py:206
+#: plugin/serializers.py:229
msgid "Activate this plugin"
msgstr "Aktivér denne utvidelsen"
-#: plugin/serializers.py:226
+#: plugin/serializers.py:249
msgid "Delete configuration"
msgstr ""
-#: plugin/serializers.py:227
+#: plugin/serializers.py:250
msgid "Delete the plugin configuration from the database"
msgstr ""
@@ -9135,11 +9479,11 @@ msgstr ""
msgid "No valid objects provided to template"
msgstr "Ingen gyldige objekter angitt for mal"
-#: report/api.py:103 report/models.py:438 report/serializers.py:98
-#: report/serializers.py:148 templates/js/translated/purchase_order.js:1817
+#: report/api.py:103 report/models.py:446 report/serializers.py:99
+#: report/serializers.py:149 templates/js/translated/purchase_order.js:1801
#: templates/js/translated/return_order.js:353
-#: templates/js/translated/sales_order.js:887
-#: templates/js/translated/sales_order.js:1047
+#: templates/js/translated/sales_order.js:846
+#: templates/js/translated/sales_order.js:1020
msgid "Items"
msgstr ""
@@ -9167,7 +9511,11 @@ msgstr ""
msgid "Error printing label"
msgstr ""
-#: report/api.py:375 report/api.py:411
+#: report/api.py:358
+msgid "Report saved at time of printing"
+msgstr ""
+
+#: report/api.py:384 report/api.py:420
#, python-brace-format
msgid "Template file '{template}' is missing or does not exist"
msgstr "Malfil '{template}' mangler eller eksisterer ikke"
@@ -9204,135 +9552,143 @@ msgstr ""
msgid "Revision number (auto-increments)"
msgstr ""
-#: report/models.py:202
+#: report/models.py:168
+msgid "Attach to Model on Print"
+msgstr ""
+
+#: report/models.py:170
+msgid "Save report output as an attachment against linked model instance when printing"
+msgstr ""
+
+#: report/models.py:210
msgid "Filename Pattern"
msgstr "Filnavnmønster"
-#: report/models.py:203
+#: report/models.py:211
msgid "Pattern for generating filenames"
msgstr ""
-#: report/models.py:208
+#: report/models.py:216
msgid "Template is enabled"
msgstr ""
-#: report/models.py:214
+#: report/models.py:222
msgid "Target model type for template"
msgstr ""
-#: report/models.py:234
+#: report/models.py:242
msgid "Filters"
msgstr "Filtre"
-#: report/models.py:235
+#: report/models.py:243
msgid "Template query filters (comma-separated list of key=value pairs)"
msgstr ""
-#: report/models.py:294 report/models.py:361
+#: report/models.py:302 report/models.py:369
msgid "Template file"
msgstr ""
-#: report/models.py:302
+#: report/models.py:310
msgid "Page size for PDF reports"
msgstr "Sidestørrelse for PDF-rapporter"
-#: report/models.py:308
+#: report/models.py:316
msgid "Render report in landscape orientation"
msgstr "Generer rapport i landskapsorientering"
-#: report/models.py:367
+#: report/models.py:375
msgid "Width [mm]"
msgstr "Bredde [mm]"
-#: report/models.py:368
+#: report/models.py:376
msgid "Label width, specified in mm"
msgstr "Etikettbredde, spesifisert i mm"
-#: report/models.py:374
+#: report/models.py:382
msgid "Height [mm]"
msgstr "Høyde [mm]"
-#: report/models.py:375
+#: report/models.py:383
msgid "Label height, specified in mm"
msgstr "Etiketthøyde, spesifisert i mm"
-#: report/models.py:438
+#: report/models.py:446
msgid "Number of items to process"
msgstr ""
-#: report/models.py:444
+#: report/models.py:452
msgid "Report generation is complete"
msgstr ""
-#: report/models.py:448 templates/js/translated/build.js:2349
+#: report/models.py:456 templates/js/translated/build.js:2352
msgid "Progress"
msgstr ""
-#: report/models.py:448
+#: report/models.py:456
msgid "Report generation progress"
msgstr ""
-#: report/models.py:456
+#: report/models.py:464
msgid "Report Template"
msgstr ""
-#: report/models.py:463 report/models.py:486
+#: report/models.py:471 report/models.py:494
msgid "Output File"
msgstr ""
-#: report/models.py:464 report/models.py:487
+#: report/models.py:472 report/models.py:495
msgid "Generated output file"
msgstr ""
-#: report/models.py:475
+#: report/models.py:483
msgid "Label output plugin"
msgstr ""
-#: report/models.py:479
+#: report/models.py:487
msgid "Label Template"
msgstr ""
-#: report/models.py:502
+#: report/models.py:510
msgid "Snippet"
msgstr "Snutt"
-#: report/models.py:503
+#: report/models.py:511
msgid "Report snippet file"
msgstr "Rapportsnuttfil"
-#: report/models.py:510
+#: report/models.py:518
msgid "Snippet file description"
msgstr "Filbeskrivelse for snutt"
-#: report/models.py:528
+#: report/models.py:536
msgid "Asset"
msgstr "Ressurs"
-#: report/models.py:529
+#: report/models.py:537
msgid "Report asset file"
msgstr "Rapportressursfil"
-#: report/models.py:536
+#: report/models.py:544
msgid "Asset file description"
msgstr "Ressursfilbeskrivelse"
-#: report/serializers.py:91
+#: report/serializers.py:92
msgid "Select report template"
msgstr ""
-#: report/serializers.py:99 report/serializers.py:149
+#: report/serializers.py:100 report/serializers.py:150
msgid "List of item primary keys to include in the report"
msgstr ""
-#: report/serializers.py:132
+#: report/serializers.py:133
msgid "Select label template"
msgstr ""
-#: report/serializers.py:140
+#: report/serializers.py:141
msgid "Printing Plugin"
msgstr ""
-#: report/serializers.py:141
+#: report/serializers.py:142
msgid "Select plugin to use for label printing"
msgstr ""
@@ -9365,9 +9721,9 @@ msgstr "Leverandør ble slettet"
#: report/templates/report/inventree_sales_order_report.html:30
#: templates/js/translated/order.js:341 templates/js/translated/pricing.js:527
#: templates/js/translated/pricing.js:596
-#: templates/js/translated/pricing.js:834
-#: templates/js/translated/purchase_order.js:2185
-#: templates/js/translated/sales_order.js:1873
+#: templates/js/translated/pricing.js:832
+#: templates/js/translated/purchase_order.js:2169
+#: templates/js/translated/sales_order.js:1854
msgid "Unit Price"
msgstr "Enhetspris"
@@ -9379,13 +9735,18 @@ msgstr "Ekstra linjeelementer"
#: report/templates/report/inventree_purchase_order_report.html:72
#: report/templates/report/inventree_sales_order_report.html:72
-#: templates/js/translated/purchase_order.js:2087
-#: templates/js/translated/sales_order.js:1842
+#: templates/js/translated/purchase_order.js:2071
+#: templates/js/translated/sales_order.js:1823
#: templates/test_statistics_table.html:8
#: templates/test_statistics_table.html:19
msgid "Total"
msgstr ""
+#: report/templates/report/inventree_sales_order_shipment_report.html:23
+#: stock/templates/stock/stock_sidebar.html:8
+msgid "Allocations"
+msgstr "Tildelinger"
+
#: report/templates/report/inventree_stock_location_report.html:97
msgid "Stock location items"
msgstr "Artikler ved lagerplassering"
@@ -9403,15 +9764,13 @@ msgstr "Testresultater"
msgid "Test"
msgstr ""
-#: report/templates/report/inventree_test_report.html:103 stock/models.py:2544
-msgid "Result"
-msgstr "Resultat"
-
#: report/templates/report/inventree_test_report.html:129
+#: templates/js/translated/stock.js:1448
msgid "Pass"
msgstr "Bestått"
#: report/templates/report/inventree_test_report.html:131
+#: templates/js/translated/stock.js:1450
msgid "Fail"
msgstr "Mislykket"
@@ -9420,17 +9779,18 @@ msgid "No result (required)"
msgstr "Ingen resultat (obligatorisk)"
#: report/templates/report/inventree_test_report.html:140
+#: templates/js/translated/stock.js:1455
msgid "No result"
msgstr "Ingen resultat"
#: report/templates/report/inventree_test_report.html:153
-#: stock/serializers.py:599 stock/templates/stock/stock_sidebar.html:16
+#: stock/serializers.py:626 stock/templates/stock/stock_sidebar.html:16
msgid "Installed Items"
msgstr "Installerte artikler"
-#: report/templates/report/inventree_test_report.html:167 stock/admin.py:161
+#: report/templates/report/inventree_test_report.html:167 stock/admin.py:162
#: templates/js/translated/stock.js:706 templates/js/translated/stock.js:877
-#: templates/js/translated/stock.js:3194
+#: templates/js/translated/stock.js:3195
msgid "Serial"
msgstr "Serienummer"
@@ -9450,67 +9810,67 @@ msgstr "part_image-taggen krever en Part-instans"
msgid "company_image tag requires a Company instance"
msgstr "company_image-taggen krever en Company-instans"
-#: stock/admin.py:51 stock/admin.py:171
+#: stock/admin.py:51 stock/admin.py:172
msgid "Location ID"
msgstr "Plasserings-ID"
-#: stock/admin.py:63 stock/templates/stock/location.html:128
-#: stock/templates/stock/location.html:134
+#: stock/admin.py:63 stock/templates/stock/location.html:129
+#: stock/templates/stock/location.html:135
msgid "Location Path"
msgstr "Plasserings-sti"
-#: stock/admin.py:148
+#: stock/admin.py:149
msgid "Stock Item ID"
msgstr "Lagervare-ID"
-#: stock/admin.py:167
+#: stock/admin.py:168
msgid "Status Code"
msgstr "Statuskode"
-#: stock/admin.py:179
+#: stock/admin.py:180
msgid "Supplier Part ID"
msgstr "Leverandørdel-ID"
-#: stock/admin.py:184
+#: stock/admin.py:185
msgid "Supplier Part SKU"
msgstr ""
-#: stock/admin.py:189
+#: stock/admin.py:190
msgid "Supplier ID"
msgstr "Leverandør-ID"
-#: stock/admin.py:200
+#: stock/admin.py:201
msgid "Customer ID"
msgstr "Kunde-ID"
-#: stock/admin.py:205 stock/models.py:825
-#: stock/templates/stock/item_base.html:354
+#: stock/admin.py:206 stock/models.py:902
+#: stock/templates/stock/item_base.html:351
msgid "Installed In"
msgstr "Installert i"
-#: stock/admin.py:210
+#: stock/admin.py:211
msgid "Build ID"
msgstr "Produksjons-ID"
-#: stock/admin.py:220
+#: stock/admin.py:221
msgid "Sales Order ID"
msgstr "Salgsordre-ID"
-#: stock/admin.py:225
+#: stock/admin.py:226
msgid "Purchase Order ID"
msgstr "Innkjøpsordre-ID"
-#: stock/admin.py:240
+#: stock/admin.py:241
msgid "Review Needed"
msgstr "Gjennomgang kreves"
-#: stock/admin.py:245
+#: stock/admin.py:246
msgid "Delete on Deplete"
msgstr "Slett når oppbrukt"
-#: stock/admin.py:260 stock/models.py:919
-#: stock/templates/stock/item_base.html:433
-#: templates/js/translated/stock.js:2315 users/models.py:124
+#: stock/admin.py:261 stock/models.py:996
+#: stock/templates/stock/item_base.html:430
+#: templates/js/translated/stock.js:2316 users/models.py:124
msgid "Expiry Date"
msgstr "Utløpsdato"
@@ -9526,11 +9886,11 @@ msgstr ""
msgid "Include sub-locations in filtered results"
msgstr ""
-#: stock/api.py:367 stock/serializers.py:1186
+#: stock/api.py:366 stock/serializers.py:1217
msgid "Parent Location"
msgstr ""
-#: stock/api.py:368
+#: stock/api.py:367
msgid "Filter by parent location"
msgstr ""
@@ -9550,8 +9910,8 @@ msgstr "Utløpsdato før"
msgid "Expiry date after"
msgstr "Utløpsdato etter"
-#: stock/api.py:840 stock/serializers.py:604
-#: stock/templates/stock/item_base.html:439
+#: stock/api.py:840 stock/serializers.py:631
+#: stock/templates/stock/item_base.html:436
#: templates/js/translated/table_filters.js:448
msgid "Stale"
msgstr "Foreldet"
@@ -9560,594 +9920,598 @@ msgstr "Foreldet"
msgid "Quantity is required"
msgstr "Antall kreves"
-#: stock/api.py:933
+#: stock/api.py:932
msgid "Valid part must be supplied"
msgstr "Gyldig del må oppgis"
-#: stock/api.py:964
+#: stock/api.py:959
msgid "The given supplier part does not exist"
msgstr "Oppgitt leverandørdel eksisterer ikke"
-#: stock/api.py:974
+#: stock/api.py:969
msgid "The supplier part has a pack size defined, but flag use_pack_size not set"
msgstr "Leverandørdelen har en pakkestørrelse definert, men flagget \"use_pack_size\" er ikke satt"
-#: stock/api.py:1005
+#: stock/api.py:996
msgid "Serial numbers cannot be supplied for a non-trackable part"
msgstr "Serienumre kan ikke angis for en ikke-sporbar del"
-#: stock/models.py:64
+#: stock/models.py:70
msgid "Stock Location type"
msgstr "Lagerplasseringstype"
-#: stock/models.py:65
+#: stock/models.py:71
msgid "Stock Location types"
msgstr "Lagerplasseringstyper"
-#: stock/models.py:91
+#: stock/models.py:97
msgid "Default icon for all locations that have no icon set (optional)"
msgstr "Standard ikom for alle plasseringer som ikke har satt et ikon (valgfritt)"
-#: stock/models.py:131 stock/models.py:807
-#: stock/templates/stock/location.html:17
+#: stock/models.py:137 stock/models.py:884
+#: stock/templates/stock/location.html:18
#: stock/templates/stock/stock_app_base.html:8
msgid "Stock Location"
msgstr "Lagerplassering"
-#: stock/models.py:132 stock/templates/stock/location.html:183
+#: stock/models.py:138 stock/templates/stock/location.html:184
#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178
#: users/models.py:205
msgid "Stock Locations"
msgstr "Lagerplasseringer"
-#: stock/models.py:180 stock/models.py:968
-#: stock/templates/stock/item_base.html:247
+#: stock/models.py:186 stock/models.py:1045
+#: stock/templates/stock/item_base.html:244
msgid "Owner"
msgstr "Eier"
-#: stock/models.py:181 stock/models.py:969
+#: stock/models.py:187 stock/models.py:1046
msgid "Select Owner"
msgstr "Velg eier"
-#: stock/models.py:189
+#: stock/models.py:195
msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations."
msgstr "Lagervarer kan ikke knyttes direkte mot en strukturell lagerplassering, men kan knyttes mot underplasseringer."
-#: stock/models.py:196 templates/js/translated/stock.js:2865
+#: stock/models.py:202 templates/js/translated/stock.js:2866
#: templates/js/translated/table_filters.js:250
msgid "External"
msgstr "Ekstern"
-#: stock/models.py:197
+#: stock/models.py:203
msgid "This is an external stock location"
msgstr "Dette er en ekstern lagerplassering"
-#: stock/models.py:203 templates/js/translated/stock.js:2874
+#: stock/models.py:209 templates/js/translated/stock.js:2875
#: templates/js/translated/table_filters.js:253
msgid "Location type"
msgstr "Plasseringstype"
-#: stock/models.py:207
+#: stock/models.py:213
msgid "Stock location type of this location"
msgstr "Lagerplasseringstype for denne plasseringen"
-#: stock/models.py:279
+#: stock/models.py:285
msgid "You cannot make this stock location structural because some stock items are already located into it!"
msgstr "De kan ikke gjøre denne plasseringen strukturell, da noen lagervarer allerede er plassert i den!"
-#: stock/models.py:664
+#: stock/models.py:492
+msgid "Part must be specified"
+msgstr ""
+
+#: stock/models.py:741
msgid "Stock items cannot be located into structural stock locations!"
msgstr "Lagervarer kan ikke plasseres i strukturelle plasseringer!"
-#: stock/models.py:691 stock/serializers.py:480
+#: stock/models.py:768 stock/serializers.py:492
msgid "Stock item cannot be created for virtual parts"
msgstr "Lagervare kan ikke opprettes for virtuelle deler"
-#: stock/models.py:708
+#: stock/models.py:785
#, python-brace-format
msgid "Part type ('{self.supplier_part.part}') must be {self.part}"
msgstr "Deltype ('{self.supplier_part.part}') må være {self.part}"
-#: stock/models.py:718 stock/models.py:731
+#: stock/models.py:795 stock/models.py:808
msgid "Quantity must be 1 for item with a serial number"
msgstr "Antall må være 1 for produkt med et serienummer"
-#: stock/models.py:721
+#: stock/models.py:798
msgid "Serial number cannot be set if quantity greater than 1"
msgstr "Serienummeret kan ikke angis hvis antall er større enn 1"
-#: stock/models.py:743
+#: stock/models.py:820
msgid "Item cannot belong to itself"
msgstr "Elementet kan ikke tilhøre seg selv"
-#: stock/models.py:748
+#: stock/models.py:825
msgid "Item must have a build reference if is_building=True"
msgstr "Elementet må ha en produksjonsrefereanse om is_building=True"
-#: stock/models.py:761
+#: stock/models.py:838
msgid "Build reference does not point to the same part object"
msgstr "Produksjonsreferanse peker ikke til samme del-objekt"
-#: stock/models.py:777
+#: stock/models.py:854
msgid "Parent Stock Item"
msgstr "Overordnet lagervare"
-#: stock/models.py:789
+#: stock/models.py:866
msgid "Base part"
msgstr "Basisdel"
-#: stock/models.py:799
+#: stock/models.py:876
msgid "Select a matching supplier part for this stock item"
msgstr "Velg en tilsvarende leverandørdel for denne lagervaren"
-#: stock/models.py:811
+#: stock/models.py:888
msgid "Where is this stock item located?"
msgstr "Hvor er denne lagervaren plassert?"
-#: stock/models.py:819 stock/serializers.py:1580
+#: stock/models.py:896 stock/serializers.py:1611
msgid "Packaging this stock item is stored in"
msgstr "Inpakningen denne lagervaren er lagret i"
-#: stock/models.py:830
+#: stock/models.py:907
msgid "Is this item installed in another item?"
msgstr "Er denne artikkelen montert i en annen artikkel?"
-#: stock/models.py:849
+#: stock/models.py:926
msgid "Serial number for this item"
msgstr "Serienummer for denne artikkelen"
-#: stock/models.py:863 stock/serializers.py:1563
+#: stock/models.py:940 stock/serializers.py:1594
msgid "Batch code for this stock item"
msgstr "Batchkode for denne lagervaren"
-#: stock/models.py:868
+#: stock/models.py:945
msgid "Stock Quantity"
msgstr "Lagerantall"
-#: stock/models.py:878
+#: stock/models.py:955
msgid "Source Build"
msgstr "Kildeproduksjon"
-#: stock/models.py:881
+#: stock/models.py:958
msgid "Build for this stock item"
msgstr "Produksjon for denne lagervaren"
-#: stock/models.py:888 stock/templates/stock/item_base.html:363
+#: stock/models.py:965 stock/templates/stock/item_base.html:360
msgid "Consumed By"
msgstr "Brukt av"
-#: stock/models.py:891
+#: stock/models.py:968
msgid "Build order which consumed this stock item"
msgstr "Produksjonsordren som brukte denne lagervaren"
-#: stock/models.py:900
+#: stock/models.py:977
msgid "Source Purchase Order"
msgstr "Kildeinnkjøpsordre"
-#: stock/models.py:904
+#: stock/models.py:981
msgid "Purchase order for this stock item"
msgstr "Innkjøpsordre for denne lagervaren"
-#: stock/models.py:910
+#: stock/models.py:987
msgid "Destination Sales Order"
msgstr "Tildelt Salgsordre"
-#: stock/models.py:921
+#: stock/models.py:998
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:939
+#: stock/models.py:1016
msgid "Delete on deplete"
msgstr "Slett når oppbrukt"
-#: stock/models.py:940
+#: stock/models.py:1017
msgid "Delete this Stock Item when stock is depleted"
msgstr "Slett lagervaren når beholdningen er oppbrukt"
-#: stock/models.py:960
+#: stock/models.py:1037
msgid "Single unit purchase price at time of purchase"
msgstr "Innkjøpspris per enhet på kjøpstidspunktet"
-#: stock/models.py:991
+#: stock/models.py:1068
msgid "Converted to part"
msgstr "Konvertert til del"
-#: stock/models.py:1511
+#: stock/models.py:1600
msgid "Part is not set as trackable"
msgstr "Delen er ikke angitt som sporbar"
-#: stock/models.py:1517
+#: stock/models.py:1606
msgid "Quantity must be integer"
msgstr "Antall må være heltall"
-#: stock/models.py:1525
+#: stock/models.py:1614
#, python-brace-format
msgid "Quantity must not exceed available stock quantity ({self.quantity})"
msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({self.quantity})"
-#: stock/models.py:1531
-msgid "Serial numbers must be a list of integers"
-msgstr "Serienumre må være en liste over tall"
+#: stock/models.py:1620
+msgid "Serial numbers must be provided as a list"
+msgstr ""
-#: stock/models.py:1536
+#: stock/models.py:1625
msgid "Quantity does not match serial numbers"
msgstr "Antallet stemmer ikke overens med serienumrene"
-#: stock/models.py:1544 stock/serializers.py:726
-msgid "Serial numbers already exist"
-msgstr "Seriernummer eksisterer allerede"
-
-#: stock/models.py:1641
+#: stock/models.py:1747 stock/models.py:2563
msgid "Test template does not exist"
msgstr ""
-#: stock/models.py:1659
+#: stock/models.py:1765
msgid "Stock item has been assigned to a sales order"
msgstr "Lagervare har blitt tildelt en salgsordre"
-#: stock/models.py:1663
+#: stock/models.py:1769
msgid "Stock item is installed in another item"
msgstr "Lagervare er montert i en annen artikkel"
-#: stock/models.py:1666
+#: stock/models.py:1772
msgid "Stock item contains other items"
msgstr "Lagervare inneholder andre artikler"
-#: stock/models.py:1669
+#: stock/models.py:1775
msgid "Stock item has been assigned to a customer"
msgstr "Lagervare har blitt tildelt til en kunde"
-#: stock/models.py:1672
+#: stock/models.py:1778
msgid "Stock item is currently in production"
msgstr "Lagervare er for tiden i produksjon"
-#: stock/models.py:1675
+#: stock/models.py:1781
msgid "Serialized stock cannot be merged"
msgstr "Serialisert lagerbeholdning kan ikke slås sammen"
-#: stock/models.py:1682 stock/serializers.py:1469
+#: stock/models.py:1788 stock/serializers.py:1500
msgid "Duplicate stock items"
msgstr "Duplisert lagervare"
-#: stock/models.py:1686
+#: stock/models.py:1792
msgid "Stock items must refer to the same part"
msgstr "Lagervarer må referere til samme del"
-#: stock/models.py:1694
+#: stock/models.py:1800
msgid "Stock items must refer to the same supplier part"
msgstr "Lagervarer må referere til samme leverandørdel"
-#: stock/models.py:1699
+#: stock/models.py:1805
msgid "Stock status codes must match"
msgstr "Lagerstatuskoder må være like"
-#: stock/models.py:1960
+#: stock/models.py:2066
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:2343
+#: stock/models.py:2462
msgid "Stock Item Tracking"
msgstr ""
-#: stock/models.py:2376
+#: stock/models.py:2495
msgid "Entry notes"
msgstr "Oppføringsnotater"
-#: stock/models.py:2416
+#: stock/models.py:2535
msgid "Stock Item Test Result"
msgstr ""
-#: stock/models.py:2449
+#: stock/models.py:2566
msgid "Value must be provided for this test"
msgstr "Verdi må angis for denne testen"
-#: stock/models.py:2454
+#: stock/models.py:2570
msgid "Attachment must be uploaded for this test"
msgstr "Vedlegg må lastes opp for denne testen"
-#: stock/models.py:2459
+#: stock/models.py:2575
msgid "Invalid value for this test"
msgstr ""
-#: stock/models.py:2544
+#: stock/models.py:2660
msgid "Test result"
msgstr "Testresultat"
-#: stock/models.py:2551
+#: stock/models.py:2667
msgid "Test output value"
msgstr "Testens verdi"
-#: stock/models.py:2559
+#: stock/models.py:2675 stock/serializers.py:245
msgid "Test result attachment"
msgstr "Vedlegg til testresultat"
-#: stock/models.py:2563
+#: stock/models.py:2679
msgid "Test notes"
msgstr "Testnotater"
-#: stock/models.py:2571 templates/js/translated/stock.js:1633
+#: stock/models.py:2687 templates/js/translated/stock.js:1633
msgid "Test station"
msgstr ""
-#: stock/models.py:2572
+#: stock/models.py:2688
msgid "The identifier of the test station where the test was performed"
msgstr ""
-#: stock/models.py:2578
+#: stock/models.py:2694
msgid "Started"
msgstr ""
-#: stock/models.py:2579
+#: stock/models.py:2695
msgid "The timestamp of the test start"
msgstr ""
-#: stock/models.py:2585
+#: stock/models.py:2701
msgid "Finished"
msgstr ""
-#: stock/models.py:2586
+#: stock/models.py:2702
msgid "The timestamp of the test finish"
msgstr ""
-#: stock/serializers.py:76
+#: stock/serializers.py:77
msgid "Generated batch code"
msgstr ""
-#: stock/serializers.py:85
+#: stock/serializers.py:86
msgid "Select build order"
msgstr ""
-#: stock/serializers.py:94
+#: stock/serializers.py:95
msgid "Select stock item to generate batch code for"
msgstr ""
-#: stock/serializers.py:103
+#: stock/serializers.py:104
msgid "Select location to generate batch code for"
msgstr ""
-#: stock/serializers.py:112
+#: stock/serializers.py:113
msgid "Select part to generate batch code for"
msgstr ""
-#: stock/serializers.py:121
+#: stock/serializers.py:122
msgid "Select purchase order"
msgstr ""
-#: stock/serializers.py:128
+#: stock/serializers.py:129
msgid "Enter quantity for batch code"
msgstr ""
-#: stock/serializers.py:151
+#: stock/serializers.py:152
msgid "Generated serial number"
msgstr ""
-#: stock/serializers.py:160
+#: stock/serializers.py:161
msgid "Select part to generate serial number for"
msgstr ""
-#: stock/serializers.py:168
+#: stock/serializers.py:169
msgid "Quantity of serial numbers to generate"
msgstr ""
-#: stock/serializers.py:233
+#: stock/serializers.py:234
msgid "Test template for this result"
msgstr ""
-#: stock/serializers.py:254
+#: stock/serializers.py:258
msgid "Template ID or test name must be provided"
msgstr ""
-#: stock/serializers.py:286
+#: stock/serializers.py:290
msgid "The test finished time cannot be earlier than the test started time"
msgstr ""
-#: stock/serializers.py:323
+#: stock/serializers.py:327
msgid "Serial number is too large"
msgstr "Serienummeret e